~/tools / LLM JSON Repair
LLM JSON Repair — Defektes JSON einer KI reparieren
Repariert das Fast-JSON, das KI-Modelle liefern: entfernt Code-Fences und Begleittext, nachgestellte Kommas und Kommentare, korrigiert Anführungszeichen, Schlüssel und Python-Werte und listet genau auf, was geändert wurde. Nichts verlässt Ihren Browser.
Es werden nur Korrekturen mit einer eindeutigen Lösung angewendet. Alles andere wird mit seiner Position gemeldet, statt geraten zu werden.
Alles läuft in Ihrem Browser. Der eingefügte Text wird nicht hochgeladen.
Sprachmodelle verpacken JSON oft in einen Code-Fence und einen Begleitsatz und brechen dann die Syntax: ein Komma zu viel, einfache Anführungszeichen, ein Kommentar, True statt true. JSON.parse lehnt all das ab. Dieses Tool findet das JSON im Text und repariert nur Probleme, für die es genau eine eindeutige Korrektur gibt. Anschließend listet es jede Änderung auf, damit Sie sie beurteilen können. Wurde die Ausgabe abgeschnitten, schließt es alles, was offen ist, und warnt Sie, dass Daten fehlen können. Es rät nicht: Eingaben, die es nicht reparieren kann, werden mit einer Positionsangabe gemeldet, statt stillschweigend verändert zu werden.
Anwendungsfälle
- Die Antwort eines Modells korrigieren, bevor sie an JSON.parse oder in eine Konfigurationsdatei geht
- Eine Antwort bereinigen, in der das JSON von einem Code-Fence und einer Erklärung umgeben ist
- Prüfen, was sich geändert hat, damit ein reparierter Wert nicht unbemerkt in die Produktion gelangt
Verwendung
- Fügen Sie die Antwort des Modells ein oder laden Sie das Beispiel.
- Lesen Sie das reparierte JSON und darunter die Liste der Änderungen.
- Kopieren Sie das Ergebnis. Gelb markierte Änderungen können Informationen verlieren, prüfen Sie diese also.
Was als gültiges JSON gilt
- Strings und Mitgliedsnamen verwenden ausschließlich doppelte Anführungszeichen. Einfache Anführungszeichen gehören nicht zur Grammatik.
- Es gibt keine Kommentare. Als Füllmaterial ist nur Leerraum erlaubt.
- Ein Komma steht nur zwischen Mitgliedern oder Elementen, ein nachgestelltes Komma ist daher nicht erlaubt.
- Ein Wert ist ein Objekt, ein Array, eine Zahl oder ein String, oder einer von false, null und true. Infinity, NaN und undefined sind keine JSON-Werte.
- Zahlen dürfen keine führende Null und kein führendes + haben, und ein Dezimalpunkt braucht auf beiden Seiten Ziffern. 012, +5, .5 und 5. sind also alle ungültig.
- Steuerzeichen von U+0000 bis U+001F müssen in einem String maskiert werden, ein roher Zeilenumbruch in einem String ist daher ungültig.
- Die oberste Ebene kann jeder beliebige Wert sein, nicht nur ein Objekt oder ein Array.
Woran Modellausgaben meistens scheitern
| Problem | Beispiel | Was dieses Tool tut |
|---|---|---|
| Code-Fence und Begleittext | Gerne! ```json { … } ``` Ich hoffe, das hilft | Übernimmt nur das JSON |
| Nachgestelltes Komma | [1, 2,] | Entfernt das Komma |
| Kommentar | {"a": 1 // note} | Entfernt den Kommentar |
| Einfache Anführungszeichen | {'a': 'b'} | Verwendet doppelte Anführungszeichen |
| Schlüssel ohne Anführungszeichen | {a: 1} | Setzt den Schlüssel in Anführungszeichen |
| Python-Werte | {"ok": True, "x": None} | Schreibt true und null |
| Roher Zeilenumbruch in einem String | "Zeile eins⏎Zeile zwei" | Maskiert ihn als \n |
| NaN oder undefined | {"x": NaN} | Schreibt null und warnt, dass der Wert verloren geht |
| Abgeschnittene Antwort | {"items": [{"id": 1}, {"id": | Schließt alles Offene und warnt, dass Daten fehlen können |
Was sich sicher reparieren lässt und was nicht
Eine Reparatur ist sicher, wenn der defekte Text nur eine sinnvolle Lesart hat. Ein nachgestelltes Komma, ein Kommentar oder ein Code-Fence lässt sich entfernen, ohne dass sich ändert, was die Daten aussagen. Andere Änderungen verändern die Bedeutung, daher werden sie markiert, und Sie sollten sie prüfen: Wird eine abgeschnittene Antwort geschlossen, entsteht gültiges JSON, dem Daten fehlen, und wird NaN zu null, geht der ursprüngliche Wert verloren.
Zwei Grenzen kommen von JSON selbst. RFC 8259 sagt, dass Namen innerhalb eines Objekts eindeutig sein sollten und dass sich Software unvorhersehbar verhält, wenn sie es nicht sind; dieses Tool behält den letzten, wie es JSON.parse tut. Der RFC sagt außerdem, dass Software gut zusammenarbeitet, wenn sie nicht mehr Wertebereich oder Genauigkeit erwartet als ein IEEE-754-Double. Dieses Tool behält Zahlen so, wie Sie sie geschrieben haben, doch ein Programm, das eine sehr lange Ganzzahl in ein Double einliest, rundet sie. Ganzzahlen zwischen -(2^53)+1 und (2^53)-1 sind exakt.
Besser: die API nach strukturierter Ausgabe fragen
Reparieren ist ein Notbehelf. Die Modell-APIs können die Ausgabe auf ein Schema beschränken, und die drei Anbieter dokumentieren das unterschiedlich.
- OpenAI: Structured Outputs lässt das Modell Antworten erzeugen, die Ihrem JSON Schema entsprechen, während der JSON-Modus nur gültiges JSON garantiert. Eine Ablehnung (Refusal) muss dem Schema nicht folgen, und eine Antwort, die das maximale Token-Limit erreicht, ist unvollständig (Status incomplete, Grund max_output_tokens).
- Anthropic: Structured Outputs verwenden Constrained Decoding, damit die Antwort Ihrem Schema folgt, und laut Dokumentation gilt das in den meisten Fällen. Eine Ablehnung (stop_reason refusal) oder eine durch max_tokens abgeschnittene Antwort entspricht dem Schema womöglich nicht, prüfen Sie also stop_reason vor dem Parsen.
- Google Gemini: Das Modell wird so konfiguriert, dass es JSON erzeugt, das dem angegebenen Schema entspricht. Inhaltliche Korrektheit ist nicht garantiert, validieren Sie die Werte also, und manche Einschränkungen wie minLength und maxLength werden nicht durchgesetzt.
Keiner der drei Anbieter verspricht gültiges JSON, wenn die Ausgabe abgeschnitten wird. Prüfen Sie, warum das Modell angehalten hat, bevor Sie einem geparsten Ergebnis vertrauen.
Quellen (geprüft am 2026-10-23): RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format / OpenAI: Structured Outputs / Anthropic: Structured outputs / Google AI for Developers: Structured output
FAQ
Was wird repariert?
Entfernt werden der Code-Fence und der Text um das JSON, nachgestellte Kommas sowie Kommentare mit // oder /* */. Einfache und typografische Anführungszeichen werden zu doppelten, Schlüssel ohne Anführungszeichen werden in Anführungszeichen gesetzt, True, False und None werden zu true, false und null. Fehlende Kommas zwischen Zeilen werden ergänzt, rohe Zeilenumbrüche in Strings maskiert, und Zahlen wie +5, .5 und 0x1F werden in gültige JSON-Zahlen umgeschrieben.
Was ändert es nie?
Werte. Strings bleiben Zeichen für Zeichen erhalten, und Zahlen behalten ihre Ziffern, sodass eine lange ID wie 12345678901234567890 nicht gerundet wird. Doppelte Schlüssel verhalten sich wie bei JSON.parse: Der letzte gewinnt.
Was passiert, wenn die Antwort abgeschnitten wurde?
Es schließt die offenen Strings, Arrays und Objekte und verwirft einen Schlüssel, der noch keinen Wert hat. Der Text ist dadurch gültig, aber nicht vollständig, daher wird das Ergebnis als möglicherweise unvollständig markiert. Bitten Sie das Modell, fortzufahren, oder erhöhen Sie sein Ausgabelimit, statt einem abgeschnittenen Ergebnis zu vertrauen.
Warum wurde aus NaN oder undefined ein null?
JSON kennt weder NaN noch Infinity noch undefined. Das Tool schreibt stattdessen null und markiert die Stelle, weil der ursprüngliche Wert verloren geht.
Warum lehnt es manche Eingaben ab?
Wenn es keine einzelne offensichtliche Korrektur gibt, etwa bei einer Auslassung (...) anstelle weggelassener Elemente oder einem bloßen Wort, wo ein Wert stehen müsste, hält es an und zeigt die Stelle, statt zu raten.
Wird der Text an einen Server gesendet?
Nein. Die Reparatur läuft in Ihrem Browser.