JSON-Formatter und -Validator

Läuft in deinem Browser; nichts wird hochgeladen

JSON formatieren, validieren und minifizieren. Fehler zeigen auf die genaue Zeile und Spalte.

Input

Formatted JSON appears here as you type.

Ready
Ln 1, Col 1

Was der Formatter macht

JSON ist das Format, das die meisten Web-APIs für Request- und Response-Bodys verwenden. Server schicken es meist minifiziert, ohne Leerzeichen und Zeilenumbrüche: kompakt, aber schwer zu lesen. Formatieren (Pretty-Printing) fügt Einrückungen hinzu, damit du siehst, welche Schlüssel zu welchem Objekt gehören; Minifizieren entfernt sie wieder.

Um JSON zu formatieren, muss das Tool es parsen, also wird beim Formatieren auch validiert. Ist der Text kein gültiges JSON, bekommst du die Zeile und Spalte, an der das Parsen stoppte, was dort erwartet wurde und die übliche Ursache. Kommentare, abschließende Kommas, einfache Anführungszeichen, Schlüssel ohne Anführungszeichen und Pythons True/None lassen sich automatisch korrigieren: Das Tool listet zuerst jede Änderung auf und wendet nichts an, bevor du bestätigst.

Formatieren ändert hier nie einen Wert. Das Tool nutzt einen eigenen Parser statt JSON.parse, deshalb behalten Zahlen die Ziffern, mit denen sie geschrieben wurden (12345678901234567890 und 1.50 bleiben, wie sie sind), Escapes wie \u00e9 bleiben Escapes, und doppelte Schlüssel bleiben an ihrer Stelle. Enthält ein Dokument Daten, die JSON.parse verändern würde, etwa Ganzzahlen jenseits von 2^53 oder einen doppelten Schlüssel, listet der Inspector sie unter Data warnings auf.

So benutzt du dieses Tool

  1. 1Füge JSON in den Bereich Input ein, zieh eine .json-Datei darauf oder öffne eine mit Ctrl+O (bis 5 MB). Unter Examples findest du Beispiele zum Ausprobieren.
  2. 2Der Tab Output zeigt das Ergebnis schon beim Tippen. Wähle die Einrückung (2 Leerzeichen, 4 Leerzeichen oder Tabs), sortiere die Schlüssel oder wechsle zwischen Pretty und Minified. Mit den Pfeilen am Rand klappst du Objekte und Arrays ein.
  3. 3Um die Eingabe selbst umzuschreiben, nimm Format (Shift+Alt+F) oder Minify (Shift+Alt+M). Ctrl+Z macht beides rückgängig, ebenso Clear und angewendete Korrekturen.
  4. 4Ist das JSON ungültig, zeigen Statusleiste und Output-Tab, wo. Drück F8, um den Cursor auf den Fehler zu setzen, oder Review fixes, um die automatischen Reparaturen zu sehen.
  5. 5Tree, Table, JSONPath und Compare zeigen dieselben Daten auf andere Weise: Wähl einen Knoten im Baum, um seinen Pfad oder Wert zu kopieren, frag mit einem Ausdruck wie $.items[?(@.price < 10)].id ab oder füge ein zweites Dokument ein, um die Unterschiede aufzulisten.
  6. 6Kopiere die Ausgabe oder lade sie formatiert oder minifiziert herunter (Ctrl+S). Mit ? siehst du alle Tastenkürzel.

Fehlerbehebung

Abschließendes Komma: Entferne das , vor }
JSON erlaubt kein Komma nach dem letzten Element eines Objekts oder Arrays. Lösch es oder nutze Review fixes. Meist stammt es aus JavaScript-Code oder einer von Hand geschriebenen Konfigurationsdatei.
Eigenschaftsnamen müssen in doppelten Anführungszeichen stehen
Der Text ist ein JavaScript-Objektliteral ({name: 'x'}), kein JSON. Jeder Schlüssel und jeder String braucht doppelte Anführungszeichen. Review fixes ergänzt sie.
True ist Python; JSON verwendet true
Die Daten wurden mit Pythons print() oder str() ausgegeben. Erzeuge JSON mit json.dumps() oder lass Review fixes True, False und None ersetzen.
Unerwartetes Ende der Eingabe: Das in Zeile 1 geöffnete Objekt wird nicht geschlossen
Der Text endet, bevor jedes { und [ geschlossen ist. Wahrscheinlich wurde eine kopierte Response abgeschnitten; kopiere sie noch einmal oder speichere sie in einer Datei und öffne diese.
Unerwarteter Inhalt nach dem JSON-Wert
Hier stehen zwei oder mehr JSON-Werte hintereinander. Pack sie in ein Array oder prüfe bei zeilengetrennten JSON-Logs (NDJSON) eine Zeile nach der anderen.
Der Text beginnt mit einer Byte Order Mark (BOM)
Die Datei wurde als „UTF-8 mit BOM“ gespeichert. Viele Parser lehnen die unsichtbare Markierung am Anfang ab. Speichere sie als normales UTF-8 oder entferne sie mit Review fixes.
Strings dürfen nicht über mehrere Zeilen gehen
Ein String enthält einen echten Zeilenumbruch, oft vom Einfügen von Text mit Umbrüchen. Ersetze den Umbruch durch \n.
Eine Zahl in deinem Code weicht von der im JSON ab
Ganzzahlen über 9.007.199.254.740.991 verlieren an Genauigkeit, wenn JavaScript sie parst, deshalb kann sich eine 19-stellige ID ändern. Dieses Tool zeigt die Ziffern wie geschrieben und warnt davor; schick solche IDs in deiner API als Strings.

Häufige Fragen

Wird mein JSON irgendwo hochgeladen?

Nein. Parsen, Formatieren und alle Ansichten laufen in deinem Browser-Tab. Damit nach einem Neuladen nichts verloren geht, bleibt das Eingefügte im Session Storage dieses Tabs, bis du es löschst oder den Tab schließt. Copy link legt die Eingabe hinter das # im Link; diesen Teil schicken Browser nie an einen Server, aber jeder, dem du den Link gibst, kann sie lesen. Deine Einstellungen, etwa die Einrückung, werden in diesem Browser gespeichert.

Verändert das Formatieren meine Daten?

Nein. Werte werden exakt wie geschrieben übernommen, auch große Zahlen, Escapes und doppelte Schlüssel. Zwei Optionen ändern den Text absichtlich: Sort keys sortiert die Schlüssel um (nach Zeichencode, also Großbuchstaben vor Kleinbuchstaben), und Minify entfernt Leerraum außerhalb von Strings.

Was passiert mit doppelten Schlüsseln?

Sie bleiben erhalten und werden wie geschrieben angezeigt, mit einer Warnung. Der JSON-Standard lässt doppelte Schlüssel undefiniert; JSON.parse und die meisten Bibliotheken behalten nur den letzten Wert, also sieht Code, der dieses Dokument liest, wahrscheinlich nur einen davon. Die Ansichten Table, Compare und JSONPath folgen derselben Regel: Der letzte gewinnt.

Welche JSONPath-Syntax wird unterstützt?

Die verbreitete Goessner-Syntax: $ für die Wurzel, .key und ['key'], Indizes einschließlich negativer, [*] und .. für rekursive Suche, Vereinigungen wie [0,2], Slices wie [1:3] und Filter wie [?(@.price < 10 && @.inStock)]. Filter vergleichen Zahlen als JavaScript-Zahlen, Ganzzahlen jenseits von 2^53 werden also nur näherungsweise verglichen.

Wie groß darf eine Datei sein?

Dateien bis 5 MB lassen sich direkt öffnen. Ein Dokument von etwa 4 MB ist auf einem normalen Laptop in Sekundenbruchteilen geprüft und formatiert; ab etwa 200 KB wartet das Tool auf eine Tipppause, bevor es erneut prüft. Verschachtelungen mit mehr als 2.000 Ebenen werden als Fehler gemeldet.