JSON-Formatter & Validator
Fügen Sie JSON ein, um es lesbar zu formatieren, zu minifizieren oder die Schlüssel zu sortieren. Lässt es sich nicht parsen, zeigt der Formatter die Zeile und Spalte, an der der Parser abgebrochen hat, mit einer Markierung unter der Fehlerstelle. So finden Sie ein fehlendes Komma in einer Antwort mit 3.000 Zeilen in Sekunden.
0 Zeichen · 0 Wörter · 0 Zeilen
0 Zeichen · 0 Wörter · 0 Zeilen
Läuft komplett in diesem Browser-Tab. Ihr Text wird weder hochgeladen noch gespeichert.
JSON-Werttypen
RFC 8259 erlaubt genau diese Werte. Objekte und Arrays lassen sich verschachteln; alles andere sind Blätter.
| Typ | Beispiel | Regel |
|---|---|---|
| Objekt | {"id": 7, "tags": ["a"]} | Schlüssel müssen Strings in doppelten Anführungszeichen sein; Einträge werden durch Kommas getrennt, ohne abschließendes Komma. |
| Array | [1, "two", null] | Geordnete Liste beliebiger Werte, gemischte Typen erlaubt. |
| String | "caf\u00e9 \"quoted\"" | Nur doppelte Anführungszeichen; Steuerzeichen müssen maskiert werden; \u-Escapes haben vier Hex-Ziffern. |
| Zahl | -12.5e3 | Nur dezimal: optionales Minus, keine führenden Nullen, optionaler Bruchteil und Exponent. Kein NaN und kein Infinity. |
| true, false und null | true | Kleingeschrieben, ohne Anführungszeichen. |
Was der Parser ablehnt
Jede Eingabe unten wurde beim Erstellen dieser Seite an dasselbe JSON.parse übergeben, das auch der Formatierer verwendet.
| Eingabe | Problem | JSON.parse |
|---|---|---|
{"a": 1,} | Abschließendes Komma | Abgelehnt |
{'a': 1} | Strings in einfachen Anführungszeichen | Abgelehnt |
{"a": 1 /* note */} | Kommentare | Abgelehnt |
{a: 1} | Schlüssel ohne Anführungszeichen | Abgelehnt |
{"n": NaN} | NaN ist keine JSON-Zahl | Abgelehnt |
{"n": 012} | Führende Null | Abgelehnt |
{"n": 0x1F} | Hexadezimalzahl | Abgelehnt |
Escapes in JSON-Strings
| Zeichen | In JSON geschrieben |
|---|---|
| Doppeltes Anführungszeichen | "\"" |
| Backslash | "\\" |
| Zeilenvorschub | "\n" |
| Tabulator | "\t" |
| Wagenrücklauf | "\r" |
| Steuerzeichen U+0001 | "\u0001" |
| Schrägstrich (Escape optional) | "/" |
| Nicht-ASCII-Buchstabe (kein Escape nötig) | "é" |
Die Regeln, denen gültiges JSON folgt
JSON ist in RFC 8259 festgelegt (inhaltlich identisch mit ECMA-404). Ein Dokument besteht aus genau einem Wert: einem Objekt, einem Array, einem String, einer Zahl, true, false oder null. Objektschlüssel sind immer Strings in doppelten Anführungszeichen. Strings verwenden ausschließlich doppelte Anführungszeichen und müssen das Anführungszeichen, den Backslash und jedes Steuerzeichen unterhalb von U+0020 maskieren; Tabulatoren und Zeilenumbrüche innerhalb eines Strings werden daher als \t und \n geschrieben. RFC 8259 verlangt außerdem UTF-8 für JSON, das zwischen Systemen ausgetauscht wird.
Zahlen sind dezimal: keine führenden Nullen, keine Hexadezimalzahlen, kein NaN und kein Infinity und kein Pluszeichen davor. Das Format kennt weder Kommentare noch abschließende Kommas. Diese beiden letzten Regeln verursachen die meisten Fehler in der Praxis, weil JavaScript-Objektliterale, JSON5 und viele Konfigurationsdateien beides erlauben. Die Referenztabelle unten entstand, indem jeder häufige Fehler demselben Parser übergeben wurde, den auch der Formatierer verwendet.
Formatieren, minifizieren, sortieren
Beim Einrücken (Pretty-Print) werden Zeilenumbrüche und Einrückungen eingefügt, damit die Struktur lesbar wird; zwei Leerzeichen sind in JavaScript-Projekten der häufigste Stil, vier Leerzeichen sind bei Pythons json.dumps(indent=4) üblich, und mit Tabulatoren kann jeder die Breite selbst wählen. Das Minimieren entfernt jedes überflüssige Leerzeichen. Das verkleinert API-Nutzdaten und bringt ein Dokument für Logs oder Umgebungsvariablen in eine einzige Zeile.
Schlüssel sortieren ordnet die Mitglieder jedes Objekts rekursiv alphabetisch. JSON-Objekte sind per Definition ungeordnet, daher ändert das Sortieren die Bedeutung nicht, erleichtert aber den Vergleich zweier Dokumente aus unterschiedlichen Systemen erheblich. Beachten Sie, dass das Parsen Zahlen in JavaScript-Doubles umwandelt: Ganzzahlen über 2^53 (9.007.199.254.740.992), etwa manche Datenbank-IDs, verlieren beim erneuten Formatieren an Genauigkeit. Behalten Sie diese daher als Strings.
Von JSON in andere Formate
Ein formatiertes Dokument lässt sich leichter lesen, manchmal brauchen Sie es aber in anderer Form. Ein Array aus Objekten wird mit JSON in CSV zur Tabelle, und mit dem Datenkonverter wechseln ganze Dateien zwischen JSON, XML, YAML und CSV.
Häufig gestellte Fragen
- Warum lehnt der Formatter mein JSON mit Kommentaren ab?
- Standard-JSON kennt keine Kommentarsyntax; RFC 8259 lässt sie bewusst weg. Entfernen Sie die Kommentare oder behalten Sie die Datei als JSONC oder JSON5, falls das Programm, das sie liest, diese Formate unterstützt.
- Was bedeutet „Unexpected token“ in einer JSON-Fehlermeldung?
- Der Parser ist auf ein Zeichen gestoßen, das an dieser Stelle nicht stehen darf, etwa ein einfaches Anführungszeichen, ein abschließendes Komma vor } oder ein Schlüssel ohne Anführungszeichen. Zeile und Spalte in der Meldung zeigen auf dieses Zeichen.
- Verändert das Sortieren der Schlüssel meine Daten?
- Nein. Die Reihenfolge der Objektmitglieder hat in JSON keine Bedeutung, das sortierte Dokument ist also gleichwertig. Die Reihenfolge in Arrays ist bedeutsam und wird nie verändert.
- Warum hat sich eine lange Zahl nach dem Formatieren verändert?
- JavaScript speichert Zahlen als 64-Bit-Gleitkommazahlen, die Ganzzahlen nur bis 2^53 exakt darstellen. Größere IDs werden beim Parsen gerundet; übertragen Sie sie als Strings, damit jede Ziffer erhalten bleibt.
- Kann ich eine JSON-Datei formatieren, statt den Inhalt einzufügen?
- Öffnen Sie die Datei in einem beliebigen Texteditor, markieren Sie alles und fügen Sie es hier ein. Sehr große Dateien mit mehreren zehn Megabyte können den Tab verlangsamen, während das Textfeld sie darstellt.