Indexed by TopGit from live GitHub metadata: josdejong/jsonrepair has 2.4k stars, written primarily in TypeScript. Repair invalid JSON documents
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
The jsonrepair library has streaming support and can handle infinitely large documents.
Install
$ npm install jsonrepair
Note that in the lib folder, there are builds for ESM, UMD, and CommonJs.
Use
ES module
Use the jsonrepair function using an ES modules import:
import { jsonrepair } from 'jsonrepair'
try {
// The following is invalid JSON: is consists of JSON contents copied from
// a JavaScript code base, where the keys are missing double quotes,
// and strings are using single quotes:
const json = "{name: 'John'}"
const repaired = jsonrepair(json)
console.log(repaired) // '{"name": "John"}'
} catch (err) {
console.error(err)
}
Streaming API
Use the streaming API in Node.js:
import { createReadStream, createWriteStream } from 'node:fs'
import { pipeline } from 'node:stream'
import { jsonrepairTransform } from 'jsonrepair/stream'
const inputStream = createReadStream('./data/broken.json')
const outputStream = createWriteStream('./data/repaired.json')
pipeline(inputStream, jsonrepairTransform(), outputStream, (err) => {
if (err) {
console.error(err)
} else {
console.log('done')
}
})
// or using .pipe() instead of pipeline():
// inputStream
// .pipe(jsonrepairTransform())
// .pipe(outputStream)
// .on('error', (err) => console.error(err))
// .on('finish', () => console.log('done'))
You can use jsonrepair as a function or as a streaming transform. Broken JSON is passed to the function, and the function either returns the repaired JSON, or throws an JSONRepairError exception when an issue is encountered which could not be solved.
The streaming API is availabe in jsonrepair/stream and can be used in a Node.js stream. It consists of a transform function that can be used in a stream pipeline.
jsonrepairTransform(options?: { chunkSize?: number, bufferSize?: number }) : Transform
The option chunkSize determines the size of the chunks that the transform outputs, and is 65536 bytes by default. Changing chunkSize can influcence the performance.
The option bufferSize determines how many bytes of the input and output stream are kept in memory and is also 65536 bytes by default. This buffer is used as a "moving window" on the input and output. This is necessary because jsonrepair must look ahead or look back to see what to fix, and it must sometimes walk back the generated output to insert a missing comma for example. The bufferSize must be larger than the length of the largest string and whitespace in the JSON data, otherwise, and error is thrown when processing the data. Making bufferSize very large will result in more memory usage and less performance.
Command Line Interface (CLI)
When jsonrepair is installed globally using npm, it can be used on the command line. To install jsonrepair globally:
$ npm install -g jsonrepair
Usage:
$ jsonrepair [filename] {OPTIONS}
Options:
--version, -v Show application version
--help, -h Show this message
--output, -o Output file
--overwrite Overwrite the input file
--buffer Buffer size in bytes, for example 64K (default) or 1M
Example usage:
$ jsonrepair broken.json # Repair a file, output to console
$ jsonrepair broken.json > repaired.json # Repair a file, output to file
$ jsonrepair broken.json --output repaired.json # Repair a file, output to file
$ jsonrepair broken.json --overwrite # Repair a file, replace the file itself
$ cat broken.json | jsonrepair # Repair data from an input stream
$ cat broken.json | jsonrepair > repaired.json # Repair data from an input stream, output to file
Alternatives:
Similar libraries:
https://github.com/RyanMarcus/dirty-json
Develop
When implementing a fix or a new feature, it important to know that there are currently two implementations:
src/regular This is a non-streaming implementation. The code is small and works for files up to 512MB, ideal for usage in the browser.
src/streaming A streaming implementation that can be used in Node.js. The code is larger and more complex, and the implementation uses a configurable bufferSize and chunkSize. When the parsed document contains a string or number that is longer than the configured bufferSize, the library will throw an "Index out of range" error since it cannot hold the full string in the buffer. When configured with an infinite buffer size, the streaming implementation works the same as the regular implementation. In that case this out of range error cannot occur, but it makes the performance worse and the application can run out of memory when repairing large documents.
Both implementations are tested against the same suite of unit tests in src/index.test.ts.
Scripts:
Script
Description
npm install
Install the dependencies once
npm run build
Build the library (ESM, CommonJs, and UMD output in the folder lib)
npm test
Run the unit tests
npm run lint
Run the linter (eslint)
npm run format
Automatically fix linter issues
npm run build-and-test
Run the linter, build all, and run unit tests and integration tests
npm run release
Release a new version. This will lint, test, build, increment the version number, push the changes to git, add a git version tag, and publish the npm package.
npm run release-dry-run
Run all release steps and see the change list without actually publishing:
How active is development on josdejong/jsonrepair?
The most recent commit recorded on josdejong/jsonrepair was 1 month ago, based on the GitHub push timestamp. The repository has 88 forks — one of the better signals of community interest.
How many stars does josdejong/jsonrepair have?
josdejong/jsonrepair has 2.4k GitHub stars — refresh the page for the live number, or check github.com/josdejong/jsonrepair. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is josdejong/jsonrepair open source?
TopGit's metadata for josdejong/jsonrepair does not record a license. Most public repositories on GitHub ARE open source, but the exact terms vary — verify by opening the LICENSE file directly.
What is josdejong/jsonrepair?
josdejong/jsonrepair (josdejong/jsonrepair) is a TypeScript project on GitHub. From the project's own README: Repair invalid JSON documents
What language is josdejong/jsonrepair written in?
josdejong/jsonrepair is written primarily in TypeScript. GitHub's language field is based on the largest share of bytes in the default branch.
Where do I read more about josdejong/jsonrepair?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/josdejong/jsonrepair is the definitive source.
Read full README in the tab above.
Still deciding about jsonrepair?
One click hands the question to an AI along with this page — see what it says about jsonrepair.