Direkt zum JSON-Editor
JSON Formatter Viewer

JSON-Validator

input.json

Füge dein JSON hier ein

oder ziehe eine .json-Datei irgendwo in diesen Bereich

Hier erscheint die formatierte Ausgabe.

Warte auf Eingabe

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.