10 häufige Gründe, warum JSON.parse scheitert (und wie Sie jeden beheben)
2026-08-06
Jeder Entwickler kennt den Moment: Eine API liefert einen JSON-Klumpen, der Parser wirft ein knappes Unexpected token oder Unexpected end of JSON input zurück, und Sie starren auf eine Textwand ohne Ahnung, wo es brach. Die JSON-Grammatik ist wirklich einfach — aber auch streng, ein einziger Tippfehler irgendwo macht das ganze Dokument unparsebar. Hier sind die zehn Syntaxfehler, die die überwiegende Mehrheit realer JSON.parse-Fehler verursachen, jeder mit einem kaputten Beispiel und der Lösung, damit Sie beim nächsten Mal nicht raten müssen.
1. Schlüssel ohne Anführungszeichen
JSON verlangt, dass jeder Schlüssel in doppelte Anführungszeichen gesetzt wird. Das stolpert Menschen ständig, weil JavaScript-Objektliterale die Regel nicht teilen — {name: "Tom"} ist perfektes JS, als JSON aber Müll:
{ name: "Tom", "age": 30 }
Die Lösung ist, jeden Schlüssel zu zitieren: { "name": "Tom", "age": 30 }. Achten Sie darauf, wann immer jemand einen „JSON“-Ausschnitt direkt aus JavaScript-Quellcode kopiert.
2. Einfach zitierte Zeichenketten
JSON akzeptiert nur doppelte Anführungszeichen. 'hello' ist keine gültige JSON-Zeichenkette; es muss "hello" sein. Das sehen Sie oft bei Daten, die aus Python eingefügt wurden — repr() und print() geben Dicts mit einfachen Anführungszeichen aus, und die Ausgabe sieht fast richtig aus, bis der Parser erstickt. Die verlässliche Lösung ist, JSON mit json.dumps() zu erzeugen statt gedruckte Ausgabe zu kopieren.
3. Kommas am Ende
Das ist der mit Abstand häufigste JSON-Fehler:
{
"name": "Tom",
"age": 30,
}
Dem letzten Element eines Objekts oder Arrays darf kein Komma folgen. JavaScript, Python und modernes TypeScript erlauben Kommas am Ende bereitwillig, weshalb sie sich immer wieder in JSON einschleichen. Löschen Sie das Komma nach dem letzten Element. Beachten Sie, dass JSON5 und JSONC (das Konfigurationsformat von VS Code) Kommas am Ende erlauben — ein Standardparser aber niemals.
4. Kommentare
Standard-JSON unterstützt keinerlei Kommentare. //, /* */ und # brechen alle das Parsen. Entwickler lieben es, Konfigurationsdateien zu kommentieren, und in JSONC funktioniert das — aber nicht in einem String, der zu JSON.parse geht. Kam Ihre Datei aus einer Konfigurationsdatei, prüfen Sie, ob der Leser Kommentare vorher entfernt.
5. NaN, Infinity und undefined
Gültige JSON-Werte sind genau: Zeichenkette, Zahl, Boolescher Wert, null, Objekt, Array. NaN, Infinity und undefined stehen nicht auf der Liste. Ein Backend, das eine Struktur mit NaN serialisiert, gibt eine Ausgabe aus, die kein standardkonformer Parser lesen kann. Ersetzen Sie diese Werte vor der Serialisierung durch null (oder einen String-Platzhalter).
6. Nicht escapte Anführungszeichen und rohe Zeilenumbrüche
Ein doppeltes Anführungszeichen innerhalb einer Zeichenkette muss mit Backslash escapt werden: "He said \"hi\"". Wörtliche Zeilenumbrüche sind in Zeichenketten ebenfalls verboten — sie müssen als \n geschrieben werden. Wenn JSON durch Terminals, Logs oder Chat-Apps kopiert wird, werden Escape-Sequenzen oft verstümmelt oder gefressen, was mysteriöse Fehler erzeugt, bis man den fehlenden Backslash bemerkt. Die Payload in einen Formatierer einzufügen macht die Bruchstelle in Sekunden offensichtlich.
7. Die unsichtbare BOM
Manche Editoren speichern UTF-8-Dateien mit einer Byte Order Mark — drei unsichtbare Bytes (EF BB BF) ganz am Anfang der Datei. Sie können sie nicht sehen, aber ein strenger Parser sieht Unexpected token direkt an Position null. Sieht eine JSON-Datei perfekt gültig aus und weigert sich dennoch zu parsen, prüfen Sie die ersten Bytes mit einem Hex-Viewer oder lassen Sie file darauf laufen, und entfernen Sie die BOM.
8. Fehlerhafte Zahlen
JSON-Zahlen dürfen keine führenden Nullen haben (01 ist ungültig), nicht hexadezimal sein (0x1F ist ungültig) und nicht den Ganzzahlteil weglassen (.5 ist ungültig — schreiben Sie 0.5). Und ist Ihre „Zahl“ eigentlich eine ID, Telefonnummer oder ein Seriencode, sollte sie ohnehin als Zeichenkette gespeichert werden — führende Nullen und lange Ziffernfolgen sind beides Hinweise auf Datenmodellierung, nicht nur Syntaxprobleme.
9. Abgeschnittene Eingabe: „Unexpected end of JSON input“
Diese Meldung bedeutet fast immer, dass das Dokument abgeschnitten wurde — eine fehlende schließende Klammer, ein fehlendes ] oder Anführungszeichen. Typische Ursachen sind eine unterbrochene Netzwerkübertragung oder ein Kopieren, das das Ende des Dokuments verlor. Werfen Sie den Inhalt in einen Formatierer, und meist sehen Sie sofort, wo die Struktur keinen Sinn mehr ergibt.
10. Die Antwort ist gar kein JSON
Manchmal gibt ein Endpunkt eine HTML-Fehlerseite oder reinen Text zurück, wenn stromaufwärts etwas schiefläuft, während der Client trotzdem JSON.parse auf den Body anwendet. Das Ergebnis ist das klassische Unexpected token < in JSON. Das erste Zeichen der Fehlermeldung ist Ihr Hinweis: < bedeutet, dass HTML zurückkam. Loggen Sie die Rohantwort, bevor Sie sie parsen — das ist weit schneller, als auf den Parse-Fehler zu starren.
Ein schneller Triage-Ablauf
Wenn ein JSON-Parse scheitert, arbeiten Sie diese Schritte der Reihe nach ab. Erstens: Fügen Sie die vollständige Payload in den JSON-Formatierer ein — er hebt den ersten Syntaxfehler hervor, und die meisten Probleme sind damit gelöst. Zweitens: Ist die Struktur tief verschachtelt und das Problem nicht sichtbar, öffnen Sie es im JSON-Visualizer, um es zu einem Baum aufzuklappen und Ebene für Ebene durchzugehen. Drittens: Nennt die Fehlermeldung ein problematisches Zeichen, gleichen Sie es mit der Liste oben ab.
Und eine Gewohnheit, die die Hälfte dieser Fehler von vornherein verhindert: Serialisieren und deserialisieren Sie immer mit einer Standardbibliothek. Von Hand zusammengesetzte JSON-Strings sind die gemeinsame Grundursache von Quoting-, Escaping- und Komma-Fehlern — lassen Sie JSON.stringify die Arbeit machen. Wenn Sie diese Daten schließlich in eine Tabellenkalkulation bringen müssen, kann der JSON-zu-CSV-Konverter sie abflachen, sobald sie sauber ist.
Kurzreferenz
- Die zehn: Schlüssel ohne Anführungszeichen, einfache Anführungszeichen, Kommas am Ende, Kommentare, NaN/Infinity/undefined, nicht escapte Zeichen, BOM, fehlerhafte Zahlen, abgeschnittene Eingabe, Antwort ist kein JSON.
Unexpected token <bedeutet fast immer: HTML statt JSON.Unexpected end of JSON inputbedeutet fast immer: abgeschnittenes Dokument.- Erzeugen Sie JSON immer mit einer Standardbibliothek statt per Hand.
- Wenn ein Parse scheitert, zuerst in einen Formatierer einfügen — er zeigt den ersten Fehler.