Sprache: Deutsch

tools / json

json/

JSON formatieren, minimieren, validieren, escapen und Schlüssel sortieren, mit Live-Prüfung bei der Eingabe.

Eingabe

Ergebnis

Häufige Fragen

Was tun bei der JSON-Prüfung mit „Unexpected token“ oder „Ungültiges JSON“?

Meist ist der Text ein JavaScript- oder Python-Literal und kein Standard-JSON. Typisch sind: einfache Anführungszeichen, Schlüssel ohne doppelte Anführungszeichen, ein überzähliges Komma nach dem letzten Eintrag, Kommentare mit // oder /* */, NaN oder undefined (ebenso True und None aus Python) sowie typografische Anführungszeichen, die aus einer Chat-App kopiert wurden. Die gemeldete Position ist die Stelle, an der der Parser hängen geblieben ist; die eigentliche Ursache liegt oft kurz davor.

Wie lese ich Zeile und Spalte in der Fehlermeldung, und warum ist der Rest auf Englisch?

Zeilen und Spalten zählen ab 1. Die Position stammt bevorzugt aus der Fehlermeldung des Browsers; liefert der Browser keine (zum Beispiel Safari), durchsucht das Tool den Text selbst und findet das erste fehlerhafte Zeichen. Der englische Text nach „·“ ist die Originalmeldung von JSON.parse im Browser, die je nach Browser anders formuliert ist und hier nicht übersetzt wird.

Wie wandle ich Escapes wie \u4e2d\u6587 in JSON in lesbaren Text um?

Klicke einfach auf „Formatieren“ oder „Minimieren“. Das Tool liest das JSON mit JSON.parse ein und gibt es wieder aus, dabei werden \uXXXX-Folgen in Strings zu den echten Zeichen. Ist das Ganze ein String mit Escapes (in Anführungszeichen und voller \"), wähle zuerst „Escape aufheben“. Umgekehrt, also Nicht-ASCII-Text in die \u-Form umzuwandeln, geht hier nicht; „Escapen“ behandelt nur Anführungszeichen, Backslashes, Zeilenumbrüche und ähnliche Zeichen.

Was ist der Unterschied zwischen „Escapen“ und „Escape aufheben“, und wie stelle ich einen API-Rückgabewert voller \" wieder her?

„Escapen“ macht aus Text etwas, das in einen String passt (vor Anführungszeichen kommt ein Backslash, Zeilenumbrüche werden zu \n), und zwar ohne die umschließenden Anführungszeichen; „Escape aufheben“ macht das Gegenteil. Bei API-Ausgaben voller \" wähle „Escape aufheben“, mit oder ohne äußere Anführungszeichen. Klicke danach auf „⇄ Ergebnis als Eingabe verwenden“, dann wechselt das Tool automatisch zu „Formatieren“.

Lange Zahlen (z. B. Snowflake-IDs) ändern sich nach dem Formatieren am Ende. Was tun?

Ganze Zahlen über 2^53 (9007199254740991) lassen sich in JavaScript nicht exakt darstellen; schon beim Einlesen mit JSON.parse geht Genauigkeit verloren, und die letzten Stellen werden oft zu Nullen. Beim Formatieren oder Minimieren zeigt die Seite einen Hinweis mit bis zu 5 Positionen. Damit solche Werte erhalten bleiben, lass die Datenquelle diese IDs als Strings (in doppelten Anführungszeichen) ausgeben.

Nach dem Formatieren wurde aus 1.0 eine 1, und ein doppelter Schlüssel ist verschwunden. Warum?

Beim Formatieren und Minimieren wird das JSON erst geparst und dann neu ausgegeben, Zahlen werden dabei in JavaScript-Schreibweise neu geschrieben: aus 1.0 wird 1, aus 1E2 wird 100, aus 0.10 wird 0.1 und aus -0 wird 0, die Werte selbst bleiben gleich. Kommt ein Schlüssel in einem Objekt doppelt vor, bleibt nur der letzte erhalten, ohne Warnung.

Wie wird bei „Schlüssel sortieren“ sortiert? Ändern sich Arrays?

Schlüssel auf allen Ebenen werden nach Zeichencode aufsteigend sortiert, Großbuchstaben stehen vor Kleinbuchstaben, andere Schriften (auch Umlaute) nach Codepoint statt nach Wörterbuchreihenfolge; die Reihenfolge der Array-Elemente bleibt unverändert. Rein numerische Schlüssel (wie „2“ und „10“) sind eine Ausnahme: JavaScript stellt sie immer an den Anfang, in numerischer Reihenfolge, deshalb werden sie auch ohne „Schlüssel sortieren“ nach vorn gezogen.

Wie groß darf das JSON sein? Wird es hochgeladen?

Es gibt kein festes Größenlimit; bei mehr als 1 Million Zeichen wird die Verarbeitung nach der Eingabe um etwa 0,6 Sekunden verzögert, und sehr großer Text ist vor allem durch den Browser-Speicher begrenzt. Alles läuft in deinem Browser; die Seite sendet keine Anfragen mit deinem Inhalt und speichert deine Eingaben nicht.