Was gültiges JSON ausmacht
JSON (JavaScript Object Notation) ist in RFC 8259 standardisiert und das übliche Format für REST-APIs, Konfigurationsdateien und strukturierte Logs – etwa wenn Sie Logs mit Grafana Loki zentralisieren. Die Syntax ist bewusst klein: Objekte stehen in geschweiften Klammern und enthalten Schlüssel-Wert-Paare, Arrays stehen in eckigen Klammern. Als Werte sind Zeichenketten, Zahlen, true, false, null sowie weitere Objekte und Arrays erlaubt. Schlüssel und Zeichenketten stehen immer in doppelten Anführungszeichen.
Genau diese Strenge führt zu den meisten Fehlern: Was in JavaScript, Python oder einer YAML-Datei erlaubt ist, lehnt ein JSON-Parser ab. Der Validator oben nennt deshalb nicht nur Zeile und Spalte, sondern auch die wahrscheinliche Ursache. Er arbeitet mit einem eigenen Parser, damit die Fehlerstelle in Chrome, Firefox und Safari gleich angezeigt wird.
Die häufigsten Fehler
| Fehler | Falsch | Richtig |
|---|---|---|
| Komma nach dem letzten Eintrag | [1, 2, 3,] | [1, 2, 3] |
| Komma zwischen zwei Einträgen fehlt | {"a": 1 "b": 2} | {"a": 1, "b": 2} |
| Einfache Anführungszeichen | {'name': 'web'} | {"name": "web"} |
| Typografische Anführungszeichen | {„name“: „web“} | {"name": "web"} |
| Schlüssel ohne Anführungszeichen | {port: 80} | {"port": 80} |
| Kommentar | // Testserver | eigener Schlüssel, z. B. "_hinweis" |
| Werte aus anderen Sprachen | NaN, undefined, True, None | null, true |
| Einfacher Backslash | "C:\Users" | "C:\\Users" |
| Zeilenumbruch im Text | Umbruch direkt in der Zeichenkette | "Zeile 1\nZeile 2" |
| Führende Nullen | {"plz": 01067} | {"plz": "01067"} |
Mit „Reparatur vorschlagen“ behebt das Tool einfache Fälle automatisch: Kommas am Ende, fehlende Kommas zwischen Einträgen, einfache und typografische Anführungszeichen, Kommentare, Schlüssel ohne Anführungszeichen, True, None, NaN und undefined sowie unsichtbare Sonderzeichen. Der Vorschlag wird erneut geprüft und erst übernommen, wenn Sie das bestätigen. Werte, deren Bedeutung unklar ist – etwa führende Nullen –, ändert die Reparatur nicht.
Stolperfallen, die ein Parser nicht meldet
Manche Probleme sind syntaktisch erlaubt, führen aber zu falschen Daten. Das Tool weist unter „Kennzahlen und Hinweise“ darauf hin:
- Doppelte Schlüssel: RFC 8259 empfiehlt eindeutige Namen, verlangt sie aber nicht zwingend. Die meisten Parser – auch
JSON.parsein JavaScript und dasjson-Modul von Python – übernehmen stillschweigend den letzten Wert. - Große Ganzzahlen: JavaScript speichert Zahlen als 64-Bit-Gleitkommawerte. Ganzzahlen jenseits von 9.007.199.254.740.991 (253 − 1) werden gerundet, aus einer Datenbank-ID wird so unbemerkt eine andere. Übertragen Sie solche IDs als Zeichenkette. Beim Formatieren und Minifizieren gibt das Tool Zahlen genau so aus, wie sie in der Eingabe stehen.
- Byte-Order-Mark: Manche Editoren schreiben ein unsichtbares BOM (U+FEFF) an den Dateianfang. RFC 8259 untersagt es für über das Netz übertragenes JSON, und manche Parser brechen daran ab.
- Prototype Pollution: Schlüssel wie
__proto__können in JavaScript-Anwendungen, die JSON ungeprüft in Objekte übernehmen, das Verhalten aller Objekte verändern. Das Tool verwirft__proto__,constructorundprototypein allen Ausgaben und nennt die Fundstellen.
JSON auf der Kommandozeile prüfen
Auf Servern ohne Browser helfen jq und Python. Beide melden bei Fehlern Zeile und Spalte:
# prüfen und formatiert ausgeben
jq . config.json
# minifizieren und Schlüssel sortieren
jq -c -S . config.json
# ohne jq: Python-Bordmittel
python3 -m json.tool config.json
Für YAML-Dateien wie compose.yaml nutzen Sie den YAML-Validator, JSON Web Tokens zerlegt der JWT-Decoder.
Häufige Fragen
Werden meine Daten an einen Server gesendet?
Nein. Prüfen, Formatieren und Umwandeln laufen per JavaScript in Ihrem Browser, auch bei Eingaben bis 5 MB. Die Eingabe wird weder übertragen noch gespeichert; das Tool merkt sich lediglich Ihre Ansichtseinstellungen wie Einrückung und Ausgabeformat.
Warum erlaubt JSON keine Kommentare?
Die Spezifikation sieht keine Kommentare vor. Abgeleitete Formate wie JSONC (zum Beispiel für die Einstellungen von Visual Studio Code) oder JSON5 erlauben sie, sind aber kein Standard-JSON und scheitern an einem strikten Parser. Brauchen Sie einen Hinweis in den Daten, legen Sie ihn in einem eigenen Schlüssel ab.
Was ist der Unterschied zwischen JSON und JSON Lines?
Eine JSON-Datei enthält genau einen Wert, meist ein Objekt oder Array. JSON Lines (auch NDJSON) enthält pro Zeile ein eigenständiges JSON-Objekt und ist bei Logs verbreitet. Fügen Sie eine solche Datei hier komplett ein, meldet das Tool „Weitere Daten nach dem Ende“ – prüfen Sie dann einzelne Zeilen oder fassen Sie die Objekte in einem Array zusammen.
Nach welcher Reihenfolge sortiert „Schlüssel sortieren“?
Die Schlüssel werden in allen Ebenen nach ihren Zeichencodes sortiert, wie es auch jq -S tut: Ziffern vor Großbuchstaben, Großbuchstaben vor Kleinbuchstaben, Umlaute nach z. Sortierte Dateien lassen sich mit diff oder in Git deutlich leichter vergleichen. Ohne diese Option bleibt die Reihenfolge der Eingabe erhalten.
Kann ich JSON einfach in YAML umwandeln?
Ja, über die Ausgabe „YAML“. YAML 1.2 ist so angelegt, dass gültiges JSON zugleich gültiges YAML ist; die Umwandlung ändert nur die Schreibweise, nicht die Daten. Eine Ausnahme sind sehr große Ganzzahlen, die bei der Umwandlung gerundet werden – das Tool weist darauf hin. Passende Compose-Beispiele finden Sie in der Anleitung Docker Compose: Multi-Container-Stacks aufbauen.
Wie erhalte ich von einem Sprachmodell zuverlässig gültiges JSON?
Eine Bitte im Prompt reicht oft nicht; Modelle ergänzen gern Erklärtext oder Kommentare. Zuverlässiger ist es, die Ausgabe technisch auf eine Grammatik oder ein JSON-Schema zu beschränken. Wie das mit lokalen Modellen funktioniert, zeigt die Anleitung Strukturierte JSON-Ausgaben aus lokalen LLMs. Zum Nachprüfen einzelner Antworten eignet sich dieser Validator.