LLM 출력을 위한 JSON 복구 도구를 만들었습니다. 그 이유는 다음과 같습니다.

작성자

카테고리:

← 피드로
DEV Community · AI JSONMedic · 2026-07-21 개발(SW)

AI JSONMedic

You ask an LLM for JSON. You get this:

Enter fullscreen mode Exit fullscreen mode


json
{
“name”: “test”,
“valid”: True,
“items”: [1, 2,

Enter fullscreen mode Exit fullscreen mode


markdown

Three problems in one response: markdown fences the LLM wasn’t supposed to add, True instead of true (Python literal), and the response was cut off mid-array.

JSON.parse() throws on all three. A linter tells you what’s wrong. But you’re left fixing it manually.

I kept hitting this wall so often that I built a dedicated repair pipeline: AI JSONMedic.

Why existing tools don’t cut it

JSONLint / JSONFormatter — great for valid-ish JSON with one missing comma. Not built for LLM failure modes: they flag errors but don’t repair them.

jsonrepair (npm) — solid library, handles many cases. AI JSONMedic actually uses it as a last-resort fallback. But it doesn’t tell you what it changed, and doesn’t handle all the LLM-specific cases we needed.

The 14 failure modes we target

Through building this, we catalogued how LLMs specifically break JSON:

  1. Markdown fences`json wrapping the output
  2. Trailing commas[1, 2, 3,] (the model “runs out” of items but adds one more comma)
  3. Python literalsTrue, False, None instead of true, false, null
  4. Single quotes{'key': 'value'} instead of double quotes
  5. Smart quotes"key" (curly quotes from copy-paste)
  6. Unclosed brackets — truncated at max_tokens mid-array or mid-object
  7. Unclosed strings"value without closing
  8. Concatenated objects{"a":1}{"b":2} when streaming produces multiple chunks
  9. NDJSON — newline-delimited JSON that needs wrapping
  10. Python-style comments# this is a comment inside JSON
  11. JavaScript-style comments// inline or /* block */
  12. Escaped backslashes\\n instead of \n
  13. Duplicate keys — same key appearing twice (ambiguous — we warn, not silently pick)
  14. BOM / encoding issues — UTF-8 BOM at start of response

What makes the repair pipeline different

Each pass targets one failure mode. The order matters — strip fences first, then normalize quotes, then fix commas, then close truncated structures. Each change is tracked.

The result isn’t just a fixed JSON blob — it’s a diff showing exactly what changed:

`
✅ Removed markdown code fence (`
json … `)
✅ Converted Python literal: True → true
✅ Closed truncated array (added missing `]`)
`

That explanation is half the value when you’re debugging a production pipeline.

100% client-side

The repair runs entirely in your browser. Your production payloads never leave your machine. Open the Network tab — there’s no request for the repair itself.

JSON Studio

Beyond repair, there’s a full JSON toolbox:

  • Format / minify
  • Validate with error highlighting
  • Tree view
  • Diff two JSON blobs
  • Convert: JSON ↔ CSV, YAML, XML, SQL
  • JSONPath query
  • JSON Schema generation
  • TypeScript type generation
  • JWT decode

We’re launching on Product Hunt July 23

If you find it useful — or find broken JSON it doesn’t handle — I’d love to hear about it.

Check it out on Product Hunt →

Launching Wednesday July 23 — would mean a lot if you upvoted on the day. And if you paste in broken JSON that beats the repair engine, I’ll add a pass for it.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다