Was gültiges JSON ist
JSON (JavaScript Object Notation, RFC 8259) ist ein Textformat mit wenigen, strengen Regeln. Ein Dokument besteht aus genau einem Wert: einem Objekt wie {"name": "Anna"}, einem Array wie [1, 2, 3], einer Zeichenkette, einer Zahl oder einem der Wörter true, false und null. Objekte und Arrays lassen sich beliebig verschachteln.
- Zeichenketten und Schlüssel stehen immer in doppelten Anführungszeichen. Sonderzeichen werden mit Backslash geschrieben (
\n,\",\\,\u00e4); ein roher Zeilenumbruch in der Zeichenkette ist verboten. - Einträge werden durch Kommas getrennt, nach dem letzten steht keines. Zwischen Schlüssel und Wert steht ein Doppelpunkt.
- Zahlen sind dezimal, ohne führende Null, ohne
+davor, ohneNaNundInfinity; erlaubt sind Bruch und Exponent (-1.5e3). - Kommentare gibt es nicht. Als Leerraum zählen nur Leerzeichen, Tabulator und Zeilenumbruch. Die Kodierung ist UTF-8, am besten ohne BOM.
Der Formatierer oben macht aus einer langen Zeile lesbaren Text (2 oder 4 Leerzeichen oder Tabulator), minimiert JSON für die Übertragung und sortiert auf Wunsch alle Schlüssel rekursiv nach Zeichenwert (Großbuchstaben vor Kleinbuchstaben). Arrays behalten ihre Reihenfolge, denn sie hat Bedeutung. Zahlen und Zeichenketten gibt das Tool genau so aus, wie Sie sie geschrieben haben.
Die häufigsten Fehler
- Komma am Ende:
{"a": 1,}oder[1, 2,]. In JavaScript erlaubt, in JSON nicht. - Einfache Anführungszeichen:
{'a': 'b'}. Es müssen doppelte sein, auch bei Zeichenketten. - Schlüssel ohne Anführungszeichen:
{a: 1}. So sieht ein JavaScript- oder Python-Objekt aus der Konsole aus, aber kein JSON. - Kommentare mit
//oder/* */. Konfigurationsdateien im Format JSONC erlauben sie, normale JSON-Parser nicht. - NaN, undefined, Infinity und die Python-Werte
True,False,None. JSON kennt nurtrue,falseundnull. - Fehlendes Komma zwischen zwei Einträgen, oft nach dem Einfügen oder Löschen einer Zeile. Die Meldung zeigt die Stelle, an der der Parser stolpert; die Ursache liegt dann meist unmittelbar davor.
- Zeilenumbruch oder Tabulator in einer Zeichenkette: Er muss als
\nbzw.\tgeschrieben werden. - BOM: ein unsichtbares Zeichen am Dateianfang, das manche Editoren (vor allem unter Windows) mitspeichern.
Bei den ersten vier Fehlern kann Reparieren helfen. Es entfernt Kommentare und überzählige Kommas, wandelt einfache in doppelte Anführungszeichen um und setzt Schlüssel in Anführungszeichen, und es listet jede Änderung auf. Alles Weitere, etwa ein fehlendes Komma, müssen Sie selbst entscheiden: Das Tool würde sonst Daten raten.
JSON ist kein JavaScript-Objekt, und große Zahlen
JSON sieht aus wie ein JavaScript-Objektliteral, ist aber nur eine strenge Teilmenge davon. Ein Objekt im Code darf unquotierte Schlüssel, einfache Anführungszeichen, Kommentare und ein Komma am Ende enthalten, außerdem undefined, Funktionen und NaN. JSON.stringify lässt undefined und Funktionen in Objekten weg, macht aus NaN und Infinity ein null, schreibt ein Date als Zeichenkette und bricht bei BigInt mit einem Fehler ab. Wer ein Objekt aus der Konsole kopiert, hat deshalb noch kein JSON.
Große Zahlen: JSON selbst setzt keine Grenze, JavaScript liest jede Zahl aber als 64-Bit-Gleitkommazahl. Ganzzahlen sind nur bis 253 − 1 = 9007199254740991 exakt. Darüber wird gerundet: Aus 9007199254740993 wird 9007199254740992, ohne Fehlermeldung. Betroffen sind vor allem 64-Bit-IDs (etwa Snowflake-IDs), große Zähler und Zeitstempel in Nanosekunden. Das Tool warnt, wenn es solche Zahlen im Text findet, und lässt sie beim Formatieren unverändert. Wenn andere Programme das JSON lesen, übertragen Sie solche Werte als Zeichenkette ("id": "9007199254740993").
Ein weiteres Detail: Doppelte Schlüssel in einem Objekt sind formal erlaubt, aber unzuverlässig, denn JSON.parse behält nur den letzten Wert. Das Tool weist darauf hin.
Fragen und Antworten
Wird mein JSON hochgeladen? Nein. Alles läuft in Ihrem Browser, auch das Laden einer Datei; es gibt keine Netzwerkanfrage und nichts wird gespeichert.
Warum zeigt die Fehlermeldung eine andere Stelle als erwartet? Der Parser meldet die Stelle, an der er merkt, dass etwas nicht stimmt. Bei einem fehlenden Komma oder einer fehlenden Klammer liegt die Ursache oft eine Zeile weiter oben. Prüfen Sie die Zeile davor mit.
Warum bleibt 1.0 oder 1e3 beim Formatieren stehen? Weil das Tool Zahlen nicht neu schreibt. So geht keine Genauigkeit verloren, auch nicht bei sehr großen Werten.
Kann ich JSON mit Kommentaren (JSONC) oder JSON5 prüfen? Als gültiges JSON gelten sie nicht. Mit „Reparieren“ entfernen Sie Kommentare und Kommas am Ende; JSON5 mit seinen weiteren Erweiterungen wird nur zum Teil abgedeckt.
Was ist mit Dateien, in denen jede Zeile ein Objekt ist (JSON Lines, NDJSON)? Das sind mehrere Dokumente. Prüfen Sie jede Zeile einzeln, sonst meldet das Tool „weiterer Text nach dem Ende“.
Wie groß darf das JSON sein? Beim Laden einer Datei höchstens 5 MB; in das Textfeld können Sie mehr einfügen, nur wird der Browser dann langsam.
Datenschutz
Läuft vollständig in Ihrem Browser; nichts wird gesendet oder gespeichert.