Zum Inhalt springen

JSON-FormatterBeta

Formatiere, minimiere oder prüfe JSON, mit genauer Zeile und Spalte bei Fehlern. Schlüssel sortieren, Unicode escapen. Läuft komplett im Browser, ohne Upload.

0 Zeichen · 0 Zeilen
Modus

0 Zeichen · 0 Zeilen

So funktioniert es

Füge dein JSON in das Eingabefeld ein, und das Ergebnis wird angezeigt. Wähle „Formatieren“ für eine Einrückung (2 Leerzeichen, 4 Leerzeichen oder ein Tabulator), damit die Struktur leicht zu erfassen ist, oder „Minimieren“, um alle überflüssigen Leerzeichen und Zeilenumbrüche zu entfernen und die Größe zu verringern. „Prüfen“ kontrolliert nur die Syntax, ohne etwas zu verändern. Schalte „Schlüssel sortieren“ ein, um die Schlüssel jedes Objekts rekursiv alphabetisch (genauer: nach Unicode-Code-Einheit) zu sortieren, und „Nicht-ASCII-Zeichen escapen“, um Zeichen wie Emojis oder Umlaute in \uXXXX-Schreibweise umzuwandeln. Ist dein JSON nicht gültig, siehst du statt eines Ergebnisses einen Fehler mit der genauen Zeile und Spalte sowie einem kurzen Ausschnitt des umliegenden Textes.

Formatieren, Minimieren und Prüfen sind drei unterschiedliche Aufgaben

Alle drei Modi arbeiten mit demselben JSON, aber zu unterschiedlichen Zwecken. „Formatieren“ (Pretty-Printing) fügt Einrückung und Zeilenumbrüche hinzu, damit ein Mensch das Dokument leicht lesen kann; „Minimieren“ macht das Gegenteil und entfernt diese Leerzeichen, um die Dateigröße zu verkleinern. Keiner der beiden verändert die eigentlichen Werte — abgesehen von den Ausnahmen, die weiter unten unter „Große Zahlen können an Präzision verlieren“ beschrieben sind (eine Zahl außerhalb des darstellbaren Bereichs wird zu null, bei einem doppelten Schlüssel bleibt nur der letzte Wert), und einer weiteren: Eine -0 in der Eingabe wird in der Ausgabe zu 0. „Prüfen“ dient nicht der Anzeige, sondern kontrolliert nur, ob das JSON syntaktisch korrekt ist. Alle drei Modi laufen intern über denselben Parser — ein erfolgreiches Formatieren oder Minimieren ist also selbst schon der Beweis, dass das JSON gültig war.

Häufige JSON-Syntaxfehler

Die Grammatik von JSON ist einfach, aber streng bei Kleinigkeiten. Zu den häufigsten Fehlern gehören ein überzähliges Komma nach dem letzten Element in einem Array oder Objekt (trailing comma, z. B. [1, 2, 3,]), Strings oder Schlüssel in einfachen statt doppelten Anführungszeichen (JSON erlaubt nur doppelte), Objektschlüssel ganz ohne Anführungszeichen ({name: "a"}), beim Bearbeiten stehen gebliebene //- oder /* */-Kommentare, eine führende Null bei einer Zahl (01) und die Verwechslung eines JavaScript-Objektliterals — das undefined-Werte oder trailing commas enthalten kann — mit JSON. Schaltest du „Kommentare & trailing commas erlauben“ ein, werden Kommentare und trailing commas vor dem Parsen automatisch entfernt; andere Syntaxfehler wie einfache Anführungszeichen oder Schlüssel ohne Anführungszeichen musst du trotzdem von Hand korrigieren.

JSON vs. JSON5 vs. JSONC

„JSON“ ist der strenge Standard nach RFC 8259 und ECMA-404: keine Kommentare, keine trailing commas, und Strings müssen in doppelten Anführungszeichen stehen. „JSON5“ und „JSONC“ (JSON with Comments, bekannt aus Editor-Konfigurationsdateien wie VS Codes settings.json) sind großzügigere Dialekte, die von Hand angenehmer zu schreiben sein sollen und Kommentare, trailing commas und teils auch Schlüssel ohne Anführungszeichen erlauben. Dieses Tool prüft standardmäßig striktes JSON, aber mit „Kommentare & trailing commas erlauben“ akzeptiert es die häufigsten JSON5/JSONC-Gewohnheiten — Kommentare und trailing commas —, indem es sie vor dem Parsen entfernt. Diese Option lässt // und Kommas innerhalb von String-Werten bewusst unangetastet.

Große Zahlen können an Präzision verlieren

JavaScript hat nur einen Zahlentyp, ein IEEE-754-Double mit doppelter Genauigkeit, das Ganzzahlen nur bis 2^53 - 1 (9007199254740991, 16 Stellen) exakt darstellen kann. Enthält ein JSON-Dokument ein längeres Ganzzahl-Literal — etwa eine 64-Bit-Snowflake-ID, wie sie manche Systeme verwenden — rundet JSON.parse sie auf den nächstliegenden darstellbaren Wert, wobei sich die letzten Stellen stillschweigend ändern, ohne dass ein Fehler gemeldet wird. Dieses Tool durchsucht den Rohtext vor dem Parsen nach Ganzzahl-Literalen mit 16 oder mehr Stellen und zeigt nur eine Warnung, ohne den Wert zu verändern (ihn etwa in einen String umzuwandeln würde die Struktur deines Dokuments verändern). Brauchst du den exakten Wert, speichere ihn schon an der Quelle als String, oder nutze ein Tool, das gezielt für große Ganzzahlen gebaut ist.

Zwei weitere Fälle verändern Werte ohne Fehlermeldung, und das Tool warnt bei beiden. Eine Zahl, die für ein Double überhaupt zu groß ist, etwa 1e400, wird als Infinity gelesen und im Ergebnis zu null. Und kommt derselbe Schlüssel in einem Objekt mehrfach vor, behält JSON.parse nur den letzten Wert und verwirft die früheren stillschweigend.

Datenschutz

Das eingefügte JSON wird ausschließlich in diesem Browser-Tab verarbeitet und nirgendwo gespeichert oder übertragen. Schließt du die Seite, ist die Eingabe weg.

Quellen

Häufige Fragen

Prüft das Tool auch gegen ein JSON Schema, oder nur die Syntax?

Es prüft nur die Syntax (RFC 8259 / ECMA-404) — also ob Klammern zueinander passen, Strings in doppelten Anführungszeichen stehen und Kommas richtig gesetzt sind, unter anderem. Es validiert nicht gegen ein JSON Schema, findet also weder ein fehlendes Pflichtfeld noch einen falschen Werttyp. Dafür brauchst du ein Tool, das für genau dieses Schema gebaut ist.

Was genau macht "Kommentare & trailing commas erlauben", und kann ich es einfach dauerhaft anlassen?

Ist die Option an, entfernt das Tool vor dem Parsen `//`- und `/* */`-Kommentare sowie überzählige Kommas nach dem letzten Element in einem Array oder Objekt — praktisch für JSON5/JSONC-artige Eingaben. `//` und Kommas innerhalb von Strings bleiben unangetastet. Lässt du die Option dauerhaft an, wird auch Eingabe akzeptiert, die nach strengem RFC 8259 eigentlich ungültig ist (weil Kommentare drin sind). Schalte sie also aus, wenn du gezielt auf Standard-JSON-Konformität prüfen willst.

Warum sehe ich eine Warnung, dass Zahlen an Präzision verlieren können, und was soll ich tun?

JavaScript hat nur einen Zahlentyp, ein IEEE-754-Double, das Ganzzahlen nur bis 2^53 - 1 (9007199254740991, 16 Stellen) exakt darstellen kann. Enthält dein JSON ein längeres Ganzzahl-Literal — etwa eine 64-Bit-ID aus manchen Systemen — rundet `JSON.parse` sie stillschweigend auf den nächstliegenden darstellbaren Wert, wodurch sich die letzten Stellen ändern können, ohne dass ein Fehler auftritt. Dieses Tool durchsucht den Rohtext vor dem Parsen nach Ganzzahl-Literalen mit 16 oder mehr Stellen und warnt nur davor, ohne den Wert zu verändern (das würde die Struktur deines Dokuments verändern). Brauchst du den exakten Wert, halte ihn schon an der Quelle als String, oder nutze ein Tool, das für große Ganzzahlen gebaut ist.

Kann es große JSON-Dateien verarbeiten? Wo liegt die Grenze?

Ja, bis etwa 10MB in diesem Browser-Tab. Darüber zeigt es statt eines Versuchs eine Meldung an, weil das Parsen und Formatieren eines sehr großen JSON-Dokuments im Hauptthread den Tab kurz einfrieren lassen könnte.

Wird das JSON, das ich einfüge, irgendwohin gesendet?

Nein. Alles passiert lokal in diesem Browser-Tab, es wird nichts an einen Server gesendet. Schließt du die Seite, ist die Eingabe weg.