Daten · 3 Min. Lesezeit ·

Ungültiges JSON? Die 7 Fehler hinter fast jeder Meldung

Abschließende Kommas, einfache Anführungszeichen, Kommentare und mehr: die kleinen Patzer, die JSON kaputt machen, wie du sie schnell findest und behebst.

„Unexpected token“ und „Unexpected end of JSON input“ gehören zu den Fehlermeldungen, die Entwickler am häufigsten sehen. JSON ist ein strenges Format, viel strenger als das JavaScript, aus dem es stammt, und fast jeder Fehler geht auf eine Handvoll Ursachen zurück.

1. Ein abschließendes Komma

Ein Komma nach dem letzten Element eines Objekts oder Arrays ist Fehler Nummer eins. JavaScript akzeptiert es, der JSON-Standard nicht.

{"name": "Ana", "age": 31,}   ✗
{"name": "Ana", "age": 31}    ✓

2. Einfache Anführungszeichen und 3. Schlüssel ohne Anführungszeichen

Jeder Schlüssel und jeder String braucht doppelte Anführungszeichen. {name: 'Ana'} ist gültiges JavaScript, aber ungültiges JSON; richtig ist {"name": "Ana"}.

4. Kommentare

JSON kennt keine Kommentare. // und /* */ sind Fehler, was alle überrascht, die aus einer Konfigurationsdatei in JSON5 oder JSONC kopieren, etwa aus den VS-Code-Einstellungen.

5. Sonderwerte und 6. nicht maskierte Zeichen

undefined, NaN, Infinity und Funktionen gibt es in JSON nicht; nimm null oder eine Zahl. In Strings wird ein doppeltes Anführungszeichen als \" geschrieben, ein Backslash als \\ und ein Zeilenumbruch als \n. Windows-Pfade sind eine klassische Falle: "C:\new" enthält einen Zeilenumbruch, keinen Backslash mit n.

7. Fehlende oder überzählige Klammern

Ein fehlendes schließendes } oder ] zeigt sich meist als Fehler ganz am Ende der Eingabe, weit weg vom eigentlichen Problem. Formatiertes JSON mit Einrückung zeigt sofort, welche Ebene kaputt ist.

Fehler, die man kaum sieht

Manches ungültige JSON sieht auf dem Bildschirm völlig in Ordnung aus:

  • Typografische Anführungszeichen. Text aus einer Textverarbeitung, einer Chat-App oder einer Präsentation enthält oft „ und “ statt gerader doppelter Anführungszeichen. Sie sehen ähnlich aus, aber JSON akzeptiert nur das gerade Zeichen ".
  • Eine Byte-Order-Mark (BOM). Manche Windows-Editoren speichern Dateien mit einem unsichtbaren Zeichen am Anfang. JSON.parse in JavaScript und json.loads in Python lehnen es ab, und der Fehler zeigt auf Position 0.
  • Geschützte Leerzeichen und andere unsichtbare Zeichen, die aus Webseiten kopiert wurden.

Gültiges JSON, das trotzdem Fehler verursacht

Pythons json.dumps schreibt standardmäßig NaN und Infinity, die andere Parser ablehnen; mit allow_nan=False fällt das früh auf. Sehr große Ganzzahlen wie 64-Bit-Datenbank-IDs sind gültiges JSON, verlieren in JavaScript oberhalb von 9007199254740991 aber an Genauigkeit, deshalb senden viele APIs sie als Strings. Doppelte Schlüssel erlauben die meisten Parser, doch der letzte Wert gewinnt stillschweigend.

So liest du die Fehlermeldung

Parser melden, wo sie aufgegeben haben, nicht wo der Fehler liegt. Ein fehlendes Komma wird meist am Anfang des nächsten Schlüssels gemeldet, eine fehlende schließende Klammer ganz am Ende der Eingabe. Schau direkt vor die gemeldete Stelle.

{
  "name": "Ana"
  "age": 31        ← Fehler wird hier gemeldet (Zeile 3)
}                   das fehlende Komma gehört ans Ende von Zeile 2

Die genaue Stelle finden

Der JSON-Validator von 4Dev prüft deinen Text gegen den JSON-Standard (RFC 8259) und meldet Zeile und Spalte des ersten Fehlers mit einem Korrekturvorschlag. Er prüft die Syntax, nicht die Bedeutung: Gültiges JSON kann trotzdem einen falschen Typ oder ein fehlendes Feld für deine Anwendung haben.

JSON-Validator öffnen

LinkedInXFacebook