JSON-Validator
Ein JSON-Validator schickt Ihren Text durch einen echten JSON-Parser und meldet die erste Stelle, an der die Grammatik bricht. Fügen Sie hier {"a": 1, "b": 2,} ein: Das Abzeichen springt auf Ungültig mit der Meldung „Expected double-quoted property name in JSON at position 16 (line 1 column 17)" - das Komma am Ende. Gültige Eingaben erscheinen formatiert; das Beispieldokument schrumpft beim Minifizieren von 323 B auf 221 B.
Über JSON-Validator
Dieser Validator schickt Ihren Text durch den JSON-Parser des Browsers: Was hier durchgeht, akzeptiert auch eine JavaScript-Laufzeit, ein REST-Client oder ein Konfigurationslader. Das Abzeichen neben der Beschriftung JSON-Eingabe wechselt beim Tippen zwischen Gültig und Ungültig. Scheitert es, zitiert die rote Zeile die Parser-Meldung samt Zeichenposition und ergänzt Zeile und Spalte - genug, um den Cursor auf das Komma, das Anführungszeichen oder die Klammer zu setzen, die das Dokument zerbrochen hat.
Parst der Text, druckt Prüfen und formatieren ihn mit 2, 4 oder 8 Leerzeichen Einrückung in die formatierte Ausgabe, Minifizieren entfernt jeden optionalen Leerraum auf eine Zeile, und Schlüssel sortieren schreibt jedes Objekt rekursiv mit alphabetisch geordneten Schlüsseln neu. Die Größe neben jedem Feld ist die echte Bytegröße: Das eingebaute Beispiel misst formatiert 323 B und minifiziert 221 B. Die Statistikzeile zählt Schlüssel, Objekte, Arrays und Werte sowie die maximale Verschachtelungstiefe - für dasselbe Beispiel 13 Schlüssel, 4 Objekte, 1 Array, 12 Werte und Tiefe 3. Die JSON-Pfadabfrage folgt einem Ausdruck wie $.config.theme oder $.tools[1] und zeigt den erreichten Wert, oder undefined, wenn es den Pfad nicht gibt.
Durchgesetzt wird die Grammatik der RFC 8259, deshalb wird genau das abgelehnt, was am häufigsten eingefügt wird: Kommentare, ein Komma nach dem letzten Element, einfache Anführungszeichen, Schlüssel ohne Anführungszeichen, NaN und Infinity. Zwei hintereinander eingefügte Dokumente (zeilengetrenntes JSON) scheitern mit „Unexpected non-whitespace character after JSON". Zwei Verhalten sollte man kennen: RFC 8259 sagt, Namen in einem Objekt SOLLTEN eindeutig sein, verbietet Dubletten aber nicht - {"a":1,"a":2} gilt als gültig und der letzte Wert gewinnt; und Ganzzahlen außerhalb des in der RFC genannten interoperablen Bereichs von -(2^53)+1 bis (2^53)-1 werden auf den nächsten IEEE-754-Double gerundet.
Das ist ein Syntax-, kein Schemavalidator: Er prüft Ihr Dokument nicht gegen ein JSON Schema, eine OpenAPI-Definition oder ein Avro-Schema und repariert kaputte Eingaben nicht. Alles läuft in der Seite, das Eingefügte verlässt den Browser nicht.
Anwendungsfälle
Anleitung
Fügen Sie das zu prüfende JSON in das Feld JSON-Eingabe ein, oder drücken Sie in der Schaltflächenzeile die Zwischenablage-Schaltfläche, um das eingebaute Beispieldokument zu laden.
Beobachten Sie das Abzeichen neben der Beschriftung JSON-Eingabe: Es wechselt bei jedem Tastendruck zwischen Gültig und Ungültig, und die rote Zeile darunter nennt Fehler und Position.
Wählen Sie in der Zeile Einrückung 2, 4 oder 8 Leerzeichen und drücken Sie Prüfen und formatieren, um das eingerückte Dokument in die formatierte Ausgabe zu schreiben.
Drücken Sie Minifizieren, um das Dokument auf eine Zeile zu bringen, oder Schlüssel sortieren, um jedes Objekt mit alphabetisch geordneten Schlüsseln neu zu schreiben, verschachtelte eingeschlossen.
Lesen Sie die Statistikzeile für Schlüssel, Objekte, Arrays, Werte und maximale Tiefe und vergleichen Sie die Bytegrößen neben Eingabe- und Ausgabefeld.
Tippen Sie einen Ausdruck wie $.config.theme oder $.tools[1] in die JSON-Pfadabfrage, um einen einzelnen Wert herauszuziehen, und holen Sie die Ausgabe mit der Kopieren-Schaltfläche ab.
Profi-Tipps
- Die Position in der Fehlermeldung ist ein Zeichenversatz im eingefügten Text, Zeile und Spalte werden daraus abgeleitet. Zählen Sie ab dem Anfang des Feldes, nicht ab dem Anfang Ihrer Originaldatei.
- Doppelte Schlüssel führen nicht zum Fehler. Fügen Sie {"a": 1, "a": 2} ein: Das Abzeichen sagt Gültig, die Ausgabe zeigt "a": 2 und die Statistikzeile zählt einen Schlüssel - ein stiller Datenverlust, den ein Schemavalidator abfangen würde.
- IDs mit mehr als 15 Stellen verändern sich. 12345678901234567890 wird als 12345678901234567000 ausgegeben, weil der Parser sie als Double speichert. Halten Sie lange Bezeichner als Zeichenketten, bevor sie ein JSON-Werkzeug erreichen.
- Schlüssel sortieren arbeitet rekursiv und ordnet auch verschachtelte Objekte, nicht nur die oberste Ebene. Das ist der schnellste Weg, zwei Fassungen derselben Konfiguration in einem Zeilen-Diff vergleichbar zu machen.
- Die Zwischenablage-Schaltfläche in der Schaltflächenzeile lädt ein Beispieldokument, wenn Sie das Werkzeug nur einmal laufen sehen wollen; die Papierkorb-Schaltfläche daneben leert Eingabe, Ausgabe, Statistik und Fehlerzeile auf einmal.
Fehlerbehebung
Das Abzeichen sagt Ungültig und die Meldung lautet „Expected double-quoted property name in JSON".
Auf ein Komma folgt nichts Brauchbares - fast immer ein Komma vor einer schließenden Klammer. {"a": 1, "b": 2,} meldet Position 16, Zeile 1, Spalte 17. Löschen Sie das letzte Komma. JSON erlaubt kein abschließendes Komma, obwohl JavaScript-Objektliterale es tun.
Die Meldung lautet „Expected property name or '}' in JSON at position 1".
Der erste Schlüssel ist keine Zeichenkette in doppelten Anführungszeichen. Sowohl {'a': 1} als auch {a: 1} erzeugen das an Position 1. JSON kennt weder einfache Anführungszeichen noch nackte Schlüssel; setzen Sie jeden Schlüssel und jeden Textwert in doppelte Anführungszeichen. Ein Kommentar vor dem ersten Schlüssel ergibt dieselbe Meldung.
Die Meldung lautet „Unexpected non-whitespace character after JSON".
Das erste Dokument war zu Ende und ein zweites begann. {"a":1} und {"b":2} auf zwei Zeilen melden Position 8, Zeile 2, Spalte 1. Das ist zeilengetrenntes JSON, also ein Strom von Dokumenten statt eines Dokuments: Prüfen Sie die Zeilen einzeln oder klammern Sie sie mit [ ] und Kommas.
Das Dokument gilt als gültig, aber ein Schlüssel fehlt in der Ausgabe.
Das Objekt enthielt denselben Namen zweimal. RFC 8259 sagt, Namen SOLLTEN eindeutig sein, verlangt es aber nicht, und dieser Parser behält den letzten: {"a": 1, "a": 2} gibt "a": 2 aus, die Statistikzeile zählt einen einzigen Schlüssel. Suchen Sie den wiederholten Namen in der Quelle; diese Seite warnt Sie nicht davor.
Eine lange numerische ID kommt mit anderen Endziffern zurück.
Zahlen werden als IEEE-754-Doubles geparst, deshalb wird 12345678901234567890 als 12345678901234567000 ausgegeben. RFC 8259 garantiert Interoperabilität nur für Ganzzahlen zwischen -(2^53)+1 und (2^53)-1. Setzen Sie lange Bezeichner an der Quelle in Anführungszeichen; keine Formatierungsoption hier holt die verlorenen Stellen zurück.
Häufig gestellte Fragen
Ein Werkzeug, das Ihren Text durch einen JSON-Parser schickt und sagt, ob er der Grammatik aus RFC 8259 entspricht und wo er aufhört, ihr zu entsprechen. Diese Seite zeigt neben der Eingabe ein Abzeichen Gültig oder Ungültig, die Parser-Meldung mit der Zeichenposition des ersten Fehlers und - wenn das Dokument parst - eine neu formatierte Kopie samt Zählung von Schlüsseln, Objekten, Arrays, Werten und Verschachtelungstiefe.
Fügen Sie das Dokument in das Feld JSON-Eingabe ein. Die Prüfung läuft bei jedem Tastendruck, das Abzeichen wechselt also ohne Klick auf Gültig oder Ungültig. Ist es ungültig, benennt die rote Zeile darunter Problem und Position; korrigieren Sie an Ort und Stelle und das Abzeichen kippt. Ist es gültig, drücken Sie Prüfen und formatieren für eine eingerückte Kopie in der formatierten Ausgabe.
Ein Objekt, ein Array, eine Zeichenkette in doppelten Anführungszeichen, eine Zahl, true, false oder null - beliebig tief verschachtelt. Schlüssel müssen Zeichenketten in doppelten Anführungszeichen sein. Nicht erlaubt sind: Kommentare, ein Komma nach dem letzten Element, einfache Anführungszeichen, Schlüssel ohne Anführungszeichen, NaN, Infinity und ein zweites Dokument nach dem ersten. Jeder Fall erzeugt hier eine eigene Meldung.
RFC 8259 kennt keine Kommentarsyntax, ein strenger Parser muss sie also ablehnen. Fügt man {"a": 1} mit einer Zeile // Hinweis über dem Schlüssel ein, kommt „Expected property name or '}' in JSON" mit Verweis auf den Kommentar. Formate, die Kommentare erlauben - JSONC in den VS-Code-Einstellungen, JSON5, tsconfig.json - sind Obermengen, und ihre Werkzeuge entfernen die Kommentare, bevor ein Standardparser den Text sieht.
Nein. Diese Seite prüft nur die Syntax: Sie beantwortet „parst das?", nicht „passt das zu meinem Vertrag?". Pflichtfelder, Typen, Aufzählungen oder Formate aus einem JSON Schema, einer OpenAPI-Definition oder einem Avro-Schema werden nicht geprüft. Nutzen Sie sie zuerst als Beweis, dass das Dokument wohlgeformt ist, und lassen Sie danach einen Schemavalidator laufen - ein Schemaergebnis auf nicht parsbarer Eingabe ist ohnehin wertlos.
Nein, und das mit Absicht. Zu raten, ob ein verirrtes Komma gelöscht oder ein Wert dahinter eingefügt gehört, kann Ihre Daten still verändern. Stattdessen setzt das Werkzeug Sie auf das genaue Zeichen: Die Meldung nennt Position, Zeile und Spalte, und die Prüfung läuft beim Bearbeiten erneut, sodass das Abzeichen grün wird, sobald der letzte Fehler weg ist.
So formuliert es der Browser-Parser, wenn schon das erste Token falsch ist, und er gibt den störenden Text zurück. {"a": NaN} ergibt: Unexpected token 'N', "{"a": NaN}" is not valid JSON. NaN und Infinity sind JavaScript-Zahlenliterale, die RFC 8259 nicht vorsieht; kodieren Sie sie vor dem Serialisieren als null oder als Zeichenkette.
Öffnen Sie die Datei in einem Editor, markieren Sie alles und fügen Sie es in das Feld JSON-Eingabe ein - das Werkzeug hat kein Upload-Feld, und Einfügen hält die Datei komplett vom Netz fern. Die Bytegröße neben dem Feld bestätigt, dass alles angekommen ist; ist sie kleiner als die Datei auf der Platte, hat Ihr Editor die Auswahl gekürzt, nicht das Werkzeug die Eingabe.
VS Code validiert jede Datei, die es als JSON erkennt, und unterstreicht Fehler im Editor; sein JSONC-Modus toleriert zusätzlich Kommentare in Einstellungsdateien. Notepad++ braucht dafür das Plugin JSON Viewer aus dem Plugins Admin. Beide arbeiten an einer bereits geöffneten Datei; diese Seite ist für die Nutzlast, die Sie gerade aus einem Log, einem Terminal oder dem Netzwerk-Tab kopiert haben.
Es gibt keine feste Obergrenze, denn geparst wird in Ihrem eigenen Browser-Tab und die Grenze ist dessen Speicher. Ein paar hundert Kilobyte gehen sofort durch. Mehrere Megabyte parsen ebenfalls noch, aber die Prüfung bei jedem Tastendruck macht das Tippen zäh: einfügen, Ergebnis lesen und die Quelle in einem echten Editor bearbeiten statt im Feld.