JSON ist ein striktes Format, das nachsichtig aussieht — deshalb geht so viel Zeit dafür drauf. Ein Formatierer erledigt zwei Aufgaben: Er macht eine Wand aus minifiziertem Text lesbar, und er sagt dir genau, wo der Parser aufgegeben hat. Meist bist du wegen der zweiten hier.
Die vier Dinge, die JSON nicht erlaubt
Fast alle Parse-Fehler sind einer von vier immer gleichen Fehlern — allesamt in JavaScript völlig legal und in JSON verboten. Ein Komma nach dem letzten Element. Einfache statt doppelte Anführungszeichen. Schlüssel ohne Anführungszeichen: {name: "x"} ist ein JavaScript-Objektliteral, kein JSON. Und Kommentare, die das Format zu keinem Zeitpunkt seines Lebens unterstützt hat.
Der letzte Punkt erwischt alle, die Werkzeuge konfigurieren. Akzeptiert eine Konfigurationsdatei Kommentare, ist sie kein JSON — sie ist JSON5 oder JSONC, Formate, die identisch aussehen, bis ein strikter Parser sie zu lesen verweigert. NaN und Infinity fallen ebenfalls raus, weshalb das Serialisieren eines Divisionsergebnisses etwas erzeugen kann, das kein Parser zurücknimmt.
Formatieren kann deine Schlüssel still umsortieren
Das überrascht, und man sollte es wissen, bevor man eine Datei zurück in die Produktion kopiert. Jedes Werkzeug, das JSON formatiert, parst es in den Speicher und serialisiert es neu. Bei gewöhnlichen String-Schlüsseln bleibt dabei die Einfügereihenfolge erhalten, nichts bewegt sich. Aber Schlüssel, die wie nicht-negative Ganzzahlen aussehen, sind ein Sonderfall: JavaScript zählt sie zuerst auf, aufsteigend sortiert, egal wo sie in deiner Datei standen.
Aus {"10":"a","2":"b","name":"c"} wird also {"2":"b","10":"a","name":"c"}. Die Daten sind identisch und jeder Parser stimmt zu, aber ein zeilenweiser Diff leuchtet komplett auf. Wenn du eine versionierte Datei formatierst, die nach numerischen IDs verschlüsselt ist, rechne mit diesem Rauschen.
Große Ganzzahlen verlieren still an Genauigkeit
Das verursacht echte Fehler in der Produktion. JSON hat keinen Ganzzahltyp — es hat Zahlen, und JavaScript stellt jede Zahl als 64-Bit-Gleitkommazahl dar. Exakte Ganzzahlen gibt es damit nur bis 9007199254740991, also 2^53−1. Darüber werden Werte stillschweigend auf den nächsten darstellbaren gerundet.
Füge {"id":9007199254740993} in ein beliebiges browserbasiertes JSON-Werkzeug ein, und du bekommst 9007199254740992 zurück. Kein Fehler. Keine Warnung. Die ID ist jetzt einfach falsch. Deshalb verschicken APIs mit großen Bezeichnern — Twitter/X, Discord, Snowflake-IDs aus Datenbanken — sie als Strings. Enthält dein JSON IDs jenseits dieser Grenze als nackte Zahlen, schick es durch kein JavaScript-Werkzeug, auch nicht durch dieses.
Minifizieren bringt weniger, als du denkst
Whitespace aus JSON zu entfernen spart typischerweise 10–20 % der Rohgröße — klingt nützlich, bis man sich erinnert, dass der Server es fast sicher gzip- oder brotli-komprimiert ausliefert. Kompressionsalgorithmen sind außerordentlich gut in wiederholtem Whitespace; für sie ist er praktisch gratis. Nach der Kompression liegt der Unterschied zwischen formatiertem und minifiziertem JSON oft bei wenigen Prozent.
Minifiziere, wenn du JSON in eine URL, ein data-Attribut oder sonstwohin packst, wo es nicht komprimiert wird. Bei einer API-Antwort über HTTP ist die Lesbarkeit im Netzwerk-Tab meist mehr wert als die Bytes.
Häufige Fragen
Wird mein JSON an einen Server geschickt?
Nein. Dieses Tool ist als "client" gekennzeichnet: Parsen und Formatieren laufen in deinem Browser-Tab, der Text verlässt das Gerät nie. Trotzdem: JSON aus einem echten System enthält oft Tokens, Kundendaten oder interne Bezeichner — trifft das zu, nimm einen Editor, den deine Organisation kontrolliert, statt irgendeiner kostenlosen Webseite, diese eingeschlossen.
Der Fehler sagt "position 1247" — wie finde ich das?
Die Zahl ist ein Zeichen-Offset vom Anfang der Eingabe, keine Zeilennummer, was sie von Hand unhandlich macht. Formatiere das Dokument zuerst: Einmal eingerückt, meldet der Parser den Fehler gegen eine lesbare Struktur, und die betroffene Zeile springt meist ins Auge. Zu wissen lohnt auch: Die gemeldete Position ist dort, wo der Parser das Problem bemerkt hat, nicht immer dort, wo du es verursacht hast — eine fehlende schließende Klammer wird oft weit unterhalb der eigentlich falschen Zeile gemeldet.
Verändert Formatieren meine Daten?
Fast nie, aber dieses "fast" verbirgt zwei Fälle. Zahlenartige Schlüssel werden umsortiert, und Ganzzahlen jenseits von 2^53−1 verlieren Genauigkeit — beides oben erklärt. Alles andere bleibt in der Bedeutung identisch, auch wenn der Whitespace anders aussieht.
Kann ich Kommentare in einer JSON-Konfigurationsdatei verwenden?
In JSON selbst nicht. Akzeptiert dein Werkzeug sie, liest es JSONC oder JSON5, oder es entfernt die Kommentare vor dem Parsen. Viele Editoren lassen dich sie bereitwillig schreiben, und ein strikter Parser weiter hinten lehnt die Datei dann ab — ein verwirrender Fehler. Musst du ein JSON-Dokument kommentieren und kannst das Format nicht wechseln, ist ein Geschwister-Schlüssel wie "_comment" der übliche Behelf.
Was passiert bei doppelten Schlüsseln?
Die Spezifikation sagt, Namen "sollten" eindeutig sein, verbietet Wiederholungen aber nicht — das Verhalten liegt also beim Parser. In der Praxis nimmt JavaScript das letzte Vorkommen und verwirft die früheren ohne Warnung. Hat ein Dokument Duplikate, kollabiert das Formatieren hier sie zu einem einzigen. Das ist eine Änderung, die du vielleicht nicht willst — prüfe also, bevor du das Ergebnis zurückkopierst.