JSON-Validator
input.json
Füge dein JSON hier ein
oder ziehe eine .json-Datei irgendwo in diesen Bereich
Hier erscheint die formatierte Ausgabe.
Was der Fehlerbereich zeigt
Die Meldungen des eingebauten Parsers sind knapp und je Browser verschieden —
Unexpected token } sagt fast nichts darüber, was zu ändern ist. Wenn die
Prüfung fehlschlägt, werden hier stattdessen vier Dinge gemeldet:
- Zeile und Spalte, abgeleitet aus dem Zeichen-Offset, das der Parser gemeldet hat.
- Die Quellzeile mit einer Markierung unter dem genauen Zeichen, so ausgeschnitten, dass die Markierung selbst in einer minifizierten Zeile mit 4.000 Zeichen sichtbar bleibt.
- Was der Parser erwartet hat, in verständlicher Sprache statt als rohe Engine-Meldung.
- Eine wahrscheinliche Ursache, erschlossen aus der Quelle rund um den Fehler anhand der unten aufgeführten Fälle.
Die fehlerhafte Zeile wird auch am Rand des Editors markiert, und Zum Fehler springen setzt den Cursor auf das Zeichen, damit du es korrigierst und den Status beim Tippen auf gültig umschlagen siehst.
Alle häufigen Ursachen und ihre Behebung
Hängendes Komma
In JavaScript erlaubt, in JSON ungültig. Der Parser meldet, dass er einen Eigenschaftsnamen oder einen Wert erwartet hat, denn nach einem Komma verlangt er ein weiteres Element.
{ "a": 1, "b": 2, } ✗
{ "a": 1, "b": 2 } ✓
Einfache Anführungszeichen
JSON-Strings stehen in doppelten Anführungszeichen, bei Schlüsseln wie bei Werten. Ohne Ausnahme.
{ 'name': 'ada' } ✗
{ "name": "ada" } ✓
Eigenschaftsnamen ohne Anführungszeichen
JavaScript-Objektliterale erlauben nackte Bezeichner als Schlüssel, JSON nicht. Das ist der häufigste Grund, warum ein aus dem Quellcode kopierter Ausschnitt nicht durch die Prüfung geht.
{ name: "ada" } ✗
{ "name": "ada" } ✓
Kommentare
JSON hat keine Kommentarsyntax — absichtlich. Wenn du Anmerkungen in einer Konfigurationsdatei
brauchst, nutze einen "_comment"-Schlüssel oder ein Format, das sie unterstützt,
etwa JSON5, YAML oder TOML. „Reparieren“ entfernt //- und
/* */-Kommentare, damit du die Daten wenigstens lesen kannst.
Python- und JavaScript-Literale
True, False und None stammen aus einem eingefügten
Python-repr; undefined, NaN und Infinity
kommen aus JavaScript. JSON hat genau drei Schlüsselwörter, alle klein geschrieben:
true, false und null. NaN oder Unendlich lassen sich in
JSON nicht ausdrücken — nutze null oder einen String als Platzhalter.
Nicht escapete Zeichen in Strings
Ein echter Zeilenumbruch, ein Tabulator oder ein nicht escapetes doppeltes Anführungszeichen in
einem String beendet ihn zu früh, und der Fehler taucht meist einige Tokens nach dem
eigentlichen Fehler auf. Escape sie als \n, \t und
\". Rohe Steuerzeichen unter U+0020 sind nie erlaubt.
Mehrere Werte auf oberster Ebene
Ein JSON-Dokument enthält einen Wert. Zwei durch einen Zeilenumbruch getrennte Objekte sind NDJSON — ein anderes, sehr nützliches Format, das man aber zeilenweise parsen muss. „Reparieren“ erkennt es und packt die Zeilen in ein Array, damit du die ganze Datei auf einmal ansehen kannst.
Gültig, aber riskant
Die Prüfung zu bestehen heißt nicht, dass ein Dokument unbedenklich ist. Zwei Dinge sind legales JSON und verursachen doch echte Probleme:
- Doppelte Schlüssel. Die Grammatik erlaubt sie; das Verhalten ist implementierungsabhängig. JavaScript behält das letzte Vorkommen, Daten können also stillschweigend verschwinden.
- Ganzzahlen über 253−1. Jeder JavaScript-basierte Konsument verliert beim Parsen Genauigkeit. Sind deine Kennungen 64 Bit breit, serialisiere sie als Strings.
Sobald das Dokument gültig ist, ist der Baum-Viewer der schnellste Weg zu prüfen, ob die Struktur der Erwartung entspricht, und Formatieren macht es review-fähig.
Häufige Fragen
Welche JSON-Spezifikation wird verwendet?
Der eingebaute Parser des Browsers, der RFC 8259 und ECMA-404 umsetzt. Praktisch sind die beiden gleichwertig, und RFC 8259 ersetzt RFC 7159 und RFC 4627. Ein Dokument, das hier gültig ist, wird in Node, Python, Go und Java geparst.
Prüft das mein JSON gegen ein JSON Schema?
Nein — geprüft wird die Syntax, nicht die Struktur. Beantwortet wird „ist das parsebares JSON?“, nicht „passt es zu meinem Vertrag?“. Strukturprüfung gegen ein Schema braucht das Schema und läuft besser in der Testsuite als in einem Browsertab.
Warum weicht die gemeldete Spalte von meinem Editor ab?
Spalten werden in Zeichen ab 1 gezählt, genau wie der Parser sie meldet. Editoren, die Tabulatoren als mehrere Spalten darstellen, zeigen in Zeilen mit führenden Tabulatoren eine größere Zahl. Die Markierung im Fehlerbereich zeigt immer auf das richtige Zeichen.
Ist ein leeres Dokument gültiges JSON?
Nein. RFC 8259 verlangt genau einen Wert, eine leere Datei ist also ungültig. null, 0, false, "", [] und {} sind jeweils für sich gültige Dokumente.
Der restliche Werkzeugkasten
Dieselbe Engine, derselbe Datenschutz — jede Seite läuft vollständig in deinem Browser.
JSON-Formatter
JSON mit 2 Leerzeichen, 4 Leerzeichen oder Tabulator einrücken, dann kopieren oder speichern.
JSON-Viewer
JSON-Baum auf- und zuklappen und durchsuchen; jeden Wert oder seinen Pfad kopieren.
JSON-Minifier
Leerraum entfernen und die Byte-Ersparnis vor und nach der Aktion sehen.
JSON-Beautifier
Minifiziertes oder kaputtes JSON in klare, hervorgehobene Ausgabe verwandeln.