JSON zu formatieren heißt, die Zeilenumbrüche und Einrückungen einzufügen, auf die die Maschine verzichtet hat, damit aus einer Zeile mit 40.000 Zeichen etwas mit erkennbarer Form wird. Jeder Editor und die meisten Terminals schaffen das mit einem Befehl. Zu entscheiden bleibt nur, wie weit du einrückst und ob du die Daten dafür in eine Website einfügst.
Die schnelle Antwort
- Im Terminal:
jq . file.jsonoderpython3 -m json.tool file.json. - In VS Code: Datei öffnen und Shift+Alt+F drücken (Shift+Option+F auf dem Mac).
- Im Browser: die
.json-URL in Firefox öffnen, der einen JSON-Viewer eingebaut hat, und auf Pretty Print klicken. - Am Handy: eine JSON-App mit Beautify-Befehl, statt den Text in eine Website einzufügen.
- Es lässt sich gar nicht formatieren: Dann ist es noch kein gültiges JSON. Repariere das zuerst; die Fehlermeldung des Formatierers sagt dir, wo.
Was Formatieren ändert und was nicht
Pretty-Printing fügt nur Leerraum zwischen Tokens hinzu oder entfernt ihn: Leerzeichen, Tabs und Zeilenumbrüche außerhalb von Strings. Ein korrekter Formatierer fasst die Werte nie an. Diese beiden Dokumente sind also dasselbe:
{"id":7,"tags":["a","b"],"owner":{"name":"Ana"}}
{
"id": 7,
"tags": [
"a",
"b"
],
"owner": {
"name": "Ana"
}
}
Minifizieren ist die Gegenrichtung: jedes optionale Leerzeichen und jeden Zeilenumbruch entfernen. So schickst du Daten übers Netz oder fügst sie in ein Konfigurationsfeld ein, das eine einzige Zeile will. Keine der beiden Richtungen ändert, was die Daten bedeuten. Deshalb ist es sicher, eine Datei umzuformatieren, die du nicht selbst geschrieben hast.
Zwei Operationen stehen in den meisten Tools neben dem Formatieren und sind Änderungen, auch wenn harmlose: Schlüssel sortieren, was jedes Objekt alphabetisch umordnet, und Escapen, was das ganze Dokument in einen einzigen String verwandelt. Mach sie absichtlich, nicht als Nebeneffekt.
Im Terminal
jq ist das Werkzeug, das du installiert haben solltest:
jq . data.json # pretty, 2-space indent
jq --indent 4 . data.json # 4 spaces
jq --tab . data.json # tabs
jq -c . data.json # minified, one line
jq -S . data.json # keys sorted A–Z
Um eine Datei direkt zu überschreiben, schreibst du in eine temporäre Datei und
verschiebst sie zurück. jq . data.json > data.json leert die Datei, bevor jq
sie liest.
jq . data.json > tmp.json && mv tmp.json data.json
Python bringt einen Formatierer mit, er funktioniert also auf jedem Rechner mit Python 3:
python3 -m json.tool data.json
python3 -m json.tool --indent 4 --sort-keys data.json
python3 -m json.tool --compact data.json
Ein Unterschied, der bei echten Daten zählt: json.tool liest Zahlen als
Python-Floats, sofern sie keine Ganzzahlen sind, aus 1.10 wird also 1.1. jq
1.7 und neuer behalten Zahlenliterale so, wie sie geschrieben wurden. Enthält
die Datei Preise, Versionsnummern oder IDs mit führenden Ziffern, die wichtig
sind, prüfe die Ausgabe.
Im Editor
VS Code: Shift+Alt+F formatiert das ganze Dokument, oder du nutzt
Format Selection in der Befehlspalette, um nur einen Teil zu formatieren.
Setze "editor.formatOnSave": true für [json]-Dateien, wenn du sie oft
bearbeitest. Die Einrückung folgt der Tab-Größe des Editors.
Sublime Text, Notepad++, JetBrains-IDEs formatieren alle JSON, entweder eingebaut (JetBrains: Code → Reformat Code) oder mit einem Plugin, das du in einer Zeile installierst (Notepad++: JSON Viewer oder JSTool).
Prettier ist das richtige Werkzeug, wenn das JSON eines ganzen Projekts
einheitlich aussehen soll: npx prettier --write "**/*.json".
Im Browser
Firefox formatiert jede JSON-Antwort automatisch, mit einem ausklappbaren Tab JSON, einem Tab Raw Data und einem Button Pretty Print. Schneller kannst du eine API-Antwort nicht lesen, ohne etwas zu installieren.
Chrome und Edge zeigen in neueren Versionen über dem rohen JSON ein Kontrollkästchen Pretty-print. Alles darüber hinaus (Einklappen, Suche nach Schlüsseln) braucht eine Erweiterung.
Die Frage mit den Online-Formatierern
Suchst du nach diesem Thema, besteht die erste Seite aus Websites mit einem großen Textfeld. Die funktionieren. Die Frage ist, was du da hineinfügst.
Eine API-Antwort mit Zugriffstoken, eine Konfigurationsdatei mit Datenbankpasswort, ein Kundenexport: All das wird routinemäßig in Formatierer eingefügt, und von der Seite aus kannst du nicht prüfen, ob der Text in deinem Browser bleibt oder an einen Server geschickt und protokolliert wird. Manche Seiten wurden außerdem dabei erwischt, „geteilte“ Dokumente unter erratbaren URLs zu speichern.
Die Regel ist einfach. Würdest du es nicht in einen öffentlichen Chat einfügen, formatiere es lokal. Jede der obigen Optionen läuft auf deinem eigenen Rechner.
Die Einrückung wählen
- 2 Leerzeichen sind der De-facto-Standard: jq, Prettier, die meisten JavaScript-Werkzeuge, die meisten API-Dokus.
- 4 Leerzeichen lesen sich bei tief verschachtelten Dokumenten auf einem breiten Bildschirm besser und sind die Konvention in Python.
- Tabs lassen jeden Leser seine eigene Breite wählen und machen Dateien etwas kleiner.
Keine davon ist falsch. Wähle eine pro Projekt und lass einen Formatierer sie durchsetzen, damit ein Diff Änderungen an den Daten zeigt statt Änderungen am Leerraum.
Auf iPhone und iPad
Am Handy ist JSON am schlechtesten lesbar, weil iOS eine .json-Datei als
reinen Text ohne Zeilenumbrüche zeigt. Die Wege, eine zu
öffnen, stehen hier; das Formatieren ist
der Schritt danach.
In Smart Json formatiert Beautify das Dokument mit einheitlicher Einrückung, Minify schrumpft es auf eine Zeile, und Sort keys A–Z ordnet jedes Objekt neu. Rückgängig funktioniert bei allen dreien. Lässt sich der Text nicht parsen, benennt ein Banner das Problem mit Zeile und Spalte, statt etwas halb Gültiges zu formatieren, und Fix repariert die üblichen Verdächtigen: Kommentare, nachgestellte Kommas, einfache Anführungszeichen und Schlüssel ohne Anführungszeichen.


Beautify, Minify und Sort keys auf iPhone und iPad, offline, mit einer verständlichen Fehlermeldung bei kaputtem JSON. Nichts wird in eine Website eingefügt.
Was es kannWenn das Formatieren scheitert
Ein Formatierer lehnt alles ab, was kein gültiges JSON ist, und seine Fehlermeldung ist meist eine Position: line 1, column 3,912. Bei einem minifizierten Dokument ist das eine Zeile, die Spalte ist also der Hinweis. Die üblichen Ursachen sind ein nachgestelltes Komma, einfache Anführungszeichen, ein Kommentar oder ein Wert ohne Anführungszeichen. Jeden häufigen Fehler erklären wir hier, samt der Bedeutung jeder Meldung.