Was JSON ungültig macht
JSON ist strenger als JavaScript, und die Fehler sind fast immer einer von wenigen:
| Fehler | Warum | Lösung |
|---|---|---|
| {"a": 1,} | Nachgestelltes Komma | Das Komma vor } oder ] entfernen. |
| {'a': 1} | Einfache Anführungszeichen | Zeichenketten und Schlüssel nur in doppelten Anführungszeichen. |
| {a: 1} | Schlüssel ohne Anführungszeichen | In Anführungszeichen setzen: "a". |
| // Kommentar | Keine Kommentare in JSON | Entfernen, oder JSON5 / JSONC verwenden, wo der Konsument es unterstützt (VS-Code-Einstellungen, tsconfig). |
| 0123, .5, NaN, Infinity | Keine gültigen Zahlen | Keine führenden Nullen, eine Ziffer vor dem Punkt, kein NaN/Infinity. |
| "Zeilen\numbruch" | Echter Zeilenumbruch in einer Zeichenkette | Als \n maskieren. |
| undefined | Kein JSON-Wert | null verwenden. |
Der nachsichtige Modus entfernt Kommentare und nachgestellte Kommas und wandelt einfache Anführungszeichen vor dem Parsen um, praktisch für handgeschriebene Konfigurationsdateien. Die Ausgabe ist immer striktes JSON.
YAML
YAML ist dem Geist nach eine Obermenge von JSON (jedes JSON-Dokument ist gültiges YAML), aber weit größer: Einrückung bestimmt die Struktur, Zeichenketten stehen meist ohne Anführungszeichen, und manche nackten Wörter haben überraschende Bedeutungen. yes, no, on und off werden in YAML-1.1-Parsern zu Booleans, 022 kann zu oktal 18 werden, und 3.10 wird zu 3.1. Der Konverter setzt solche Werte beim Erzeugen von YAML in Anführungszeichen, damit sie unverändert zurückkommen. Die Richtung YAML → JSON unterstützt die übliche Block-Teilmenge: Mappings, Listen, Skalare, Zeichenketten in Anführungszeichen, Flow-Sammlungen und |- / >-Blöcke.
Große Dokumente
Alles läuft in Ihrem Browser, einige Megabyte sind also kein Problem. Die Baumstatistik (Tiefe, Anzahl Objekte und Arrays) hilft, unerwartet verschachtelte Daten zu erkennen, bevor Sie sie in etwas laden, das daran erstickt.
Fragen
Warum ist mein JSON ungültig, obwohl es in JavaScript funktioniert?
JavaScript-Objektliterale erlauben Schlüssel ohne Anführungszeichen, einfache Anführungszeichen, nachgestellte Kommas, Kommentare und Hex-Zahlen. JSON erlaubt nichts davon. Schalten Sie den nachsichtigen Modus ein, um die strikte Form zu sehen.
Wie finde ich den Fehler in Zeile 2000 einer großen Datei?
Der Validator meldet Zeile und Spalte und zeigt den Text um den Fehler. Die meisten Editoren springen mit Strg-G zu einer Zeile.
Verändert das Formatieren die Daten?
Nein. Formatieren und Minimieren ändern nur Leerraum. Das Sortieren der Schlüssel ändert die Reihenfolge, die JSON nicht als bedeutsam ansieht, manche Konsumenten (Signaturen, kanonisches JSON) aber schon.
Warum hat eine Zahl an Genauigkeit verloren?
JavaScript-Zahlen sind Doubles, Ganzzahlen über 2⁵³ (etwa 9 × 10¹⁵) werden beim Parsen gerundet. Wenn Sie ein Dokument mit solchen IDs formatieren, speichern Sie sie als Zeichenketten.