JSON zu validieren bedeutet zu prüfen, dass der Text der in RFC 8259 definierten Grammatik folgt: Objekte in geschweiften Klammern mit Schlüsseln in doppelten Anführungszeichen, Arrays in eckigen Klammern, durch Kommas getrennte Werte ohne abschließendes Komma und keine Kommentare. Fast jeder Parse-Fehler hat eine von fünf Ursachen: abschließende Kommas, einfache Anführungszeichen, Kommentare, Schlüssel ohne Anführungszeichen und unzulässige Werte wie undefined oder NaN. Validieren kannst du in Sekunden mit einem Online-Tool, mit jq im Terminal oder mit JSON.parse in Node.js.
Dieser Artikel geht die Regeln durch, zeigt, wie man die Fehlermeldungen liest, und vergleicht die Möglichkeiten zum Validieren je nach Kontext.
Die JSON-Regeln in sechs Zeilen
- Ein JSON-Dokument ist ein Wert: Objekt, Array, String, Zahl,
true,falseodernull. - Objekte stehen zwischen
{}und enthalten"schlüssel": wert-Paare, durch Kommas getrennt. - Arrays stehen zwischen
[]und enthalten durch Kommas getrennte Werte. - Strings verwenden immer doppelte Anführungszeichen; Sonderzeichen darin werden mit
\maskiert (\",\\,\n,\uXXXX). - Zahlen haben keine Anführungszeichen, keine führenden Nullen und keine Formen wie
.5oder+1;1e3ist gültig. - Es gibt keine Kommentare, abschließenden Kommas,
undefined,NaN,Infinityoder Datumsangaben als nativen Typ (sie werden als Strings geschrieben).
Ein gültiges Beispiel:
{
"name": "AIMRAN Tools",
"version": 2,
"active": true,
"tags": ["bilder", "json", "text"],
"author": { "name": "Aimran", "web": "https://aimran.es" },
"publishedAt": "2026-10-06"
}
Die fünf häufigsten Fehler
1. Abschließendes Komma
{ "a": 1, "b": 2, }
In JavaScript gültig, in JSON ungültig. Node.js 22 lehnt es ab mit Expected double-quoted property name in JSON at position 18 (line 1 column 19): Nach dem Komma erwartet es einen weiteren Schlüssel und findet }.
2. Einfache Anführungszeichen
{ 'a': 1 }
JSON erlaubt nur doppelte Anführungszeichen. Node.js 22 liefert Expected property name or '}' in JSON at position 2 (line 1 column 3): Der Parser erreicht das einfache Anführungszeichen und erkennt es nicht als Beginn eines Schlüssels. Das ist der typische Fehler beim Kopieren eines Objekts aus Python- oder JavaScript-Code.
3. Kommentare
{
// Konfiguration
"debug": true
}
Weder // noch /* */ existieren in JSON. Einige abgeleitete Formate (JSONC, JSON5) erlauben sie, weshalb Dateien wie tsconfig.json oder die settings.json von VS Code sie tolerieren, aber ein strikter Parser lehnt sie ab.
4. Schlüssel ohne Anführungszeichen
{ name: "Aimran" }
In JavaScript ist das ein gültiges Objektliteral; in JSON muss der Schlüssel in doppelten Anführungszeichen stehen. Node.js liefert dieselbe Meldung wie bei einfachen Anführungszeichen (Expected property name or '}'), weil in beiden Fällen das doppelte Anführungszeichen fehlt.
5. Werte, die es in JSON nicht gibt
{ "total": NaN, "date": undefined }
NaN, Infinity und undefined sind keine JSON-Werte. Beim Serialisieren mit JSON.stringify in JavaScript verschwinden undefined-Eigenschaften und NaN wird zu null, was das Problem manchmal verbirgt, bis ein anderes System die Datei liest.
Seltenere Fehler: typografische Anführungszeichen („ und “) aus einer Textverarbeitung, ein BOM-Zeichen am Dateianfang oder eine Zahl mit führender Null (007).
Wie man eine Fehlermeldung liest
Parser melden die Position (Zeichenindex) oder Zeile und Spalte, an der sie den Text nicht mehr verstanden haben. Dieser Punkt ist, wo der Parser aufgegeben hat, und nicht immer, wo der eigentliche Fehler liegt: Eine nicht geschlossene Klammer in Zeile 3 kann am Dateiende gemeldet werden. Führt dich die Meldung nicht direkt zum Problem, suche von der gemeldeten Position rückwärts nach dem letzten noch gültigen Element.
Python 3.13 ist beim abschließenden Komma zum Beispiel beschreibender: Illegal trailing comma before end of object: line 1 column 17 (char 16). Frühere Versionen gaben die generische Meldung Expecting property name enclosed in double quotes.
Möglichkeiten, JSON zu validieren
| Kontext | Werkzeug | Befehl oder Verwendung |
|---|---|---|
| Schnell, nichts zu installieren | Online-Validator | Text in den JSON-Formatierer von AIMRAN Tools einfügen: Er markiert die Fehlerzeile und formatiert das Ergebnis, ohne die Daten an einen Server zu senden. |
| Terminal (Linux, macOS, WSL) | jq |
jq . datei.json gibt das formatierte JSON oder den Fehler mit Zeile aus. jq empty datei.json validiert nur. |
| Terminal, nichts zu installieren | Python | python3 -m json.tool datei.json |
| JavaScript-Projekt | Node.js | node -e "JSON.parse(require('fs').readFileSync('datei.json','utf8'))" |
| Editor | VS Code, Zed usw. | Sie markieren Syntaxfehler beim Tippen; stelle sicher, dass die Datei im JSON-Modus ist und nicht in JSONC. |
| Struktur validieren, nicht nur Syntax | JSON Schema | Definiere, welche Schlüssel und Typen erwartet werden, und validiere mit einer Bibliothek wie Ajv (JavaScript) oder jsonschema (Python). |
Für sensible Daten (Konfigurationen mit Schlüsseln, Nutzerexporte) bevorzuge Werkzeuge, die lokal oder im Browser arbeiten, ohne den Inhalt hochzuladen.
Syntax validieren ist nicht Inhalt validieren
Ein syntaktisch korrektes JSON-Dokument kann für deine Anwendung trotzdem unbrauchbar sein: ein falsch geschriebener Schlüssel, eine Zahl, wo du einen String erwartet hast, ein fehlendes Pflichtfeld. Genau das löst JSON Schema, ein Standard zur Beschreibung der erwarteten Form eines Dokuments. Wenn du JSON von Dritten konsumierst oder eine API bereitstellst, lohnt es sich, ein Schema zu definieren und es an der Grenze deines Systems zu validieren.
Fazit
JSON ist ein kleines Format mit strikten Regeln, und die meisten Fehler entstehen, weil man es wie JavaScript behandelt: abschließende Kommas, einfache Anführungszeichen, Kommentare und Schlüssel ohne Anführungszeichen. Um den Fehler zu finden, nutze einen Validator, der die Position meldet (online, jq, json.tool oder JSON.parse), und denk daran, dass der gemeldete Punkt der ist, an dem der Parser aufgehört hat, nicht zwingend der, an dem das Problem begann. Und wenn das JSON Teil eines Vertrags zwischen Systemen ist, ergänze JSON Schema, um auch den Inhalt zu validieren.