JSON formatieren, validieren und minifizieren.
JSON-Leitfaden
JSON (JavaScript Object Notation) is a lightweight data exchange format that has become a standard in modern programming.Es ist für Menschen leicht zu lesen und zu schreiben und für Maschinen leicht zu parsen und zu erzeugen. JSON ist programmiersprachenunabhängig und eignet sich daher ideal für die Kommunikation zwischen verschiedenen Systemen und Webanwendungen.
Die JSON-Struktur basiert auf Schlüssel-Wert-Paaren und geordneten Wertelisten.JSON-Objekte stehen in geschweiften Klammern {} und enthalten null oder mehr Schlüssel-Wert-Paare, durch Kommas getrennt.JSON-Arrays stehen in eckigen Klammern [] und enthalten eine geordnete Liste von Werten.Werte können Zeichenketten (in Anführungszeichen), Zahlen, Wahrheitswerte (true/false), null, Objekte oder Arrays sein.
Das Formatieren von JSON verbessert die Lesbarkeit des Codes.Einrückungen und Zeilenumbrüche machen die Datenstruktur übersichtlicher, was beim Debuggen und bei der Datenanalyse sehr wertvoll ist. Die Minifizierung (Entfernen von Leerzeichen) verringert die Dateigröße, was für die Performance von Webanwendungen wichtig ist, besonders bei der Datenübertragung über Netzwerke.
Die JSON-Validierung ist ein entscheidender Schritt vor der Datenverarbeitung.Ungültiges JSON kann Anwendungsfehler und unerwartetes Verhalten verursachen. Häufige Probleme sind fehlende Kommas, falsche Anführungszeichen, überzählige Kommas in Listen oder einfache statt doppelte Anführungszeichen. Validierungswerkzeuge helfen, Fehler schnell zu finden und zu beheben.
Die Ergebnisse dienen zur Information. Überprüfen Sie sie anhand anderer Quellen.
JSON mit doppeltem Schlüssel wird sauber geparst und wirft zwei Werte weg
Parsen Sie {"id": 1, "id": 2, "id": 3}, und Sie erhalten {"id": 3}. Kein Fehler, keine Warnung — das letzte Vorkommen gewinnt, die früheren verschwinden. Die Spezifikation erlaubt das, jeder gängige Parser tut es, und es bedeutet, dass ein doppelter Schlüssel in einer Konfigurationsdatei kein Syntaxfehler ist, von dem Sie erfahren.
So wird gerechnet
- Formatiert und prüft JSON und meldet die Position eines Syntaxfehlers statt nur dessen Existenz.
- Minifiziert für den Transport und rückt für das Lesen ein — zwei verschiedene Aufgaben an denselben Daten.
- Macht die strukturellen Probleme sichtbar, die ein Parser stillschweigend hinnimmt.
doppelte Schlüssel → das letzte Vorkommen gewinnt, stillschweigend ganze Zahlen über 2⁵³ − 1 → beim Parsen gerundet, stillschweigend NaN und Infinity → null undefined in einem Objekt → Schlüssel entfällt undefined in einem Array → null BigInt → wirft TypeError
Rechenbeispiel
Drei Dinge, die ein Parser mit gültigem JSON tut, ohne sich zu beschweren.
- {"id": 1, "id": 2, "id": 3} → {"id": 3}
- {"id": 9007199254740993} → {"id": 9007199254740992}
- {"id": 1770000000123456789} → {"id": 1770000000123456800}
- {a: undefined, b: 1} → {"b": 1} — der Schlüssel verschwindet
- [undefined, 1] → [null, 1] — hier wird daraus jedoch null
Derselbe undefined-Wert wird im Objekt entfernt und im Array als null bewahrt. Nichts davon erzeugt einen Fehler, weshalb es viel später als fehlendes Feld oder als Bezeichner auftaucht, der zu nichts mehr passt.
Das Ergebnis lesen
- Große Bezeichner sind der schädlichste Fall. Eine 19-stellige ID kommt aus JSON.parse als leicht andere Zahl heraus, Abfragen scheitern also gegen eine Datenbank, die das Original gespeichert hat. Übertragen Sie solche IDs als Zeichenketten — genau deshalb liefern große APIs id und id_str nebeneinander.
- JSON kennt keine Kommentare, keine abschließenden Kommas und keinen Datumstyp. Daten überleben nur als ISO-Zeichenketten per Konvention, ein Umlauf durch JSON macht aus einem Date also Text und macht daraus ohne ausdrückliche Behandlung nichts zurück.
- Einrückung kostet mehr als gedacht: das Beispiel hier wächst um 84,7%, wenn es mit zwei Leerzeichen formatiert wird. Formatieren Sie für Menschen, die es lesen, und minifizieren Sie alles, was ein Netz überquert, denn der Unterschied liegt nahe am Doppelten.
- Die Schlüsselreihenfolge bewahrt jede große Implementierung, garantiert ist sie von der Spezifikation nicht. Sich darauf zu verlassen funktioniert, bis es das nicht mehr tut, und zwei JSON-Dokumente per Zeichenkettenvergleich zu prüfen meldet Unterschiede, die reine Reihenfolge sind.
Häufige Fragen
- Warum hat sich meine ID nach einem Umlauf geändert?
- Sie überschritt 2⁵³ − 1 und wurde auf den nächsten darstellbaren Wert gerundet. 1770000000123456789 kommt als 1770000000123456800 zurück. Die Lösung ist, große Bezeichner als Zeichenketten zu führen, denn keine Sorgfalt im Parser holt bereits verlorene Stellen zurück.
- Ist ein doppelter Schlüssel ungültiges JSON?
- Nein. Die Spezifikation erlaubt ihn, und Parser lösen ihn auf, indem sie das letzte Vorkommen behalten. Das macht ihn zu einer echten Gefahr in handbearbeiteter Konfiguration, wo ein wiederholter Schlüssel eine frühere Einstellung still überschreibt und nichts den Konflikt meldet.