@toolsycc/json-repair
Version:
A robust utility to repair JSON strings - fix malformed or broken JSON, especially from LLM output like ChatGPT.
100 lines (73 loc) • 3.32 kB
Markdown
# @toolsycc/json-repair
> A small but powerful utility to repair broken JSON strings — especially useful when dealing with LLM output or hand-written JSON.
> Need to repair JSON? This tool automatically fixes malformed or broken JSON structures with a single function call.
> ✅ Works seamlessly with both **TypeScript** and **JavaScript** (ESM & CommonJS).
## Features
- Fixes:
- Unquoted keys
- Unquoted string values
- Trailing commas
- Invalid literals (NaN, undefined, Infinity)
- Capitalized literals (True, False, Null)
- Single quotes
- Missing closing braces
- Misplaced quotes inside strings
- LLM code blocks (e.g. ```json ... ```)
- LLM JSON extraction (e.g. `The result is: {...}`)
- Option to return a string or JS object
- ASCII escaping (e.g. `Café` → `Caf\u00e9`)
- Safe fallback mode
## Install
```bash
pnpm add @toolsycc/json-repair
```
Or with npm:
```bash
npm install @toolsycc/json-repair
```
## Example usage
### 🟦 TypeScript
```ts
import { repairJson } from '@toolsycc/json-repair';
const input = `{name: Seb, age: 42,}`;
const repaired = repairJson(input);
console.log(repaired);
// → {"name":"Seb","age":42}
```
### 🟨 JavaScript (CommonJS)
```js
const { repairJson } = require('@toolsycc/json-repair');
console.log(repairJson('{name: Seb, age: 42,}'));
```
### 🟩 JavaScript (ESM)
```js
import { repairJson } from '@toolsycc/json-repair';
console.log(repairJson('{name: Seb, age: 42,}'));
```
## Options
| Option | Type | Default | Description |
|----------------|----------|---------|-------------|
| `extractJson` | boolean | `false` | Extracts the first JSON block from surrounding text (useful for LLM output) |
| `encodeAscii` | boolean | `false` | Escapes non-ASCII characters (`é` → `\u00e9`) |
| `returnObject` | boolean | `false` | If true, returns a JS object instead of a JSON string |
| `logging` | boolean | `false` | Enables console logs of each transformation step |
| `safeMode` | boolean | `false` | If true, throws a friendly error instead of crashing on unrecoverable input |
## Examples
| Input | Output |
|------------------------------------|------------------------------------------|
| `{name: Seb}` | `{"name":"Seb"}` |
| `{user: {name: Seb, age: 30}}` | `{"user":{"name":"Seb","age":30}}` |
| `{value: NaN}` | `{"value":null}` |
| `'{"text": "Café"}'` + `encodeAscii: true` | `{"text":"Caf\u00e9"}` |
| `Hello!\n\n\\`\\`\\`json\n{name: Seb}` | `{"name":"Seb"}` |
## Live demonstration
Try it: [Toolsy](https://www.toolsy.cc/tools/json/analyze)
## Motivation
This package was designed to help deal with **malformed JSON**, especially the kind you get from LLMs like ChatGPT and OpenAI APIs when asking for `json` output.
This package is ideal if you're looking to **repair JSON**, **fix malformed JSON**, or **sanitize AI-generated output**.
It can also be used to quickly recover and parse broken logs or hand-crafted config files.
## Author
Made by [@Sebog33](https://github.com/Sebog33)
Follow [Toolsy](https://www.toolsy.cc) for more tiny dev-focused utilities.
## License
MIT