Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
Füge JSON ein und lies es. Das Dokument wird geparst und neu ausgegeben, statt als Text neu eingerückt zu werden — und das ist der Unterschied zwischen einem Formatierer, der eine geschweifte Klammer innerhalb eines Strings versteht, und einem, der sie zerstört. Nichts wird hochgeladen: API-Antworten sind das mit Abstand Häufigste, was in ein solches Feld eingefügt wird, und sie gehen selten jemand Fremdes etwas an.
Wo es läuft
Es wird nichts hochgeladen, weil es keine Datei gibt — gerechnet wird in dieser Seite.
Keine Warteschlange, kein Konto
Es antwortet so schnell, wie dein Rechner es hergibt, und fragt nie, wer du bist.
So oft du willst
Nichts wird gezählt und nichts begrenzt — noch einmal zu antworten kostet uns nichts.
Der billige Weg zu einem Formatierer ist, die Zeichen durchzugehen und nach jeder Klammer und jedem Komma einen Zeilenumbruch zu setzen. Das sind fünfzig Zeilen, es funktioniert bei den meisten Eingaben, und es scheitert an genau dem Fall, auf den es ankommt: einer Klammer, einer eckigen Klammer oder einem Komma innerhalb eines String-Werts. Eine URL mit Query, ein als Einstellung gespeicherter regulärer Ausdruck, eine Nachricht mit einem Komma darin — und schon ist die Ausgabe kein gültiges JSON mehr.
Diese Seite schickt das Dokument durch einen echten Parser und gibt das Ergebnis aus. Daraus folgt: Was sie zurückgibt, lässt sich garantiert parsen, und was sie ablehnt, lässt sich tatsächlich nicht parsen. Einen dritten Zustand, in dem ein Werkzeug die Eingabe halb verstanden und etwas Plausibles produziert hat, gibt es nicht.
Parsen und neu ausgeben ist nicht folgenlos, und ein Werkzeug, das das verschweigt, verbirgt etwas. Zahlen werden in ihrer kürzesten exakten Form neu geschrieben, aus `1.0` wird also `1` und aus `1e3` wird `1000`. Doppelte Schlüssel fallen auf den letzten zusammen, weil jeder JSON-Parser das so macht. Unnötige Maskierungen verlieren ihren Backslash.
Nichts davon ändert, was das Dokument für einen Parser bedeutet, und deshalb ist es vertretbar. Wenn du die Bytes exakt brauchst — weil du das Dokument signierst oder eine Prüfsumme vergleichst —, formatiere es gar nicht: Jeder Formatierer, der neu einrückt, hat die Bytes bereits verändert.
Zwei Systeme, die dasselbe Objekt serialisieren, geben seine Schlüssel oft in unterschiedlicher Reihenfolge aus — und der resultierende Vergleich ist so groß wie die Datei, was das Prüfen einer echten Ein-Feld-Änderung unmöglich macht. Sortiert man beide Seiten vorher, schrumpft er auf die Änderung selbst.
Arrays bleiben bewusst unangetastet. Ein Objekt ist per Definition ungeordnet, seine Schlüssel umzustellen ändert nichts; ein Array ist eine Folge, und es zu sortieren ändert die Daten. Werkzeuge, die beides sortieren, gibt es, und sie stellen klaglos eine Liste von Arbeitsschritten, Koordinaten oder Datenbankmigrationen um.
Zwei Leerzeichen sind bei JSON in den meisten Ökosystemen die Konvention und das, was `npm`, `composer` und die meisten Linter erzeugen. Vier begegnen einem in Python-nahen Projekten, weil es zur Sprache passt. Ein Tabulator ist richtig, wo eine Datei in Editoren mit unterschiedlichen Vorlieben gelesen wird, denn dort entscheidet der Lesende über die Breite.
Nicht mehr Geschmackssache ist es in einem Repository, in dem bereits ein Formatierer konfiguriert ist. Nimm dessen Einstellung — eine mit anderer Einrückung neu formatierte Datei erzeugt einen Vergleich, der jede Zeile berührt, und das kostet die prüfende Person weit mehr, als die Einrückung je wert war.
Eine Datei mit `//` darin ist kein JSON, und eine mit einem Komma vor der schließenden Klammer auch nicht. Beides ist JSON5 oder JSONC — andere Sprachen, die zufällig ähnlich aussehen —, und beides ist in Konfigurationsdateien weit verbreitet: `tsconfig.json` ist JSONC, was regelmäßig überrascht, wenn jemand es mit einem strengen Parser einliest.
Diese Seite lehnt das ab, statt es stillschweigend wegzuräumen, und das ist das nützlichere Verhalten: Sie sagt dir, dass die Datei dort, wohin du sie gleich schickst, nicht durchgehen wird. Ein Formatierer, der Kommentare kommentarlos entfernt, gäbe dir eine funktionierende Datei und ein falsches Bild davon, womit du es zu tun hast.
JSON-Zahlen werden zu Gleitkommazahlen doppelter Genauigkeit, und die halten Ganzzahlen nur bis etwa neun Billiarden exakt. Darüber wird eine Kennung gerundet: eine Snowflake-ID, eine alte Twitter-Status-ID, manche Primärschlüssel. Aus `12345678901234567890` wird `12345678901234567000`, und nichts in der Ausgabe sagt es.
Diese Seite bemerkt es und weist darauf hin, mehr kann sie nicht tun. Die Lösung liegt weiter oben: Systeme, die solche Kennungen ausgeben, verschicken sie aus genau diesem Grund als Zeichenketten — und wenn deines das nicht tut, ist das Formatieren nicht der Schritt, an dem sich das reparieren lässt.
Beide Begriffe werden gesucht, und beide meinen dieses Werkzeug. Eine zweite Seite mit demselben Feld und umformulierter Erklärung wäre eine Doorway-Page — genau das Muster, das der Rest dieser Website vermeidet, und dieselbe Entscheidung, die dort schon für „Zeichenzähler“ getroffen wurde.
Beide Fragen werden also hier beantwortet. Wer JSON „verschönern“ oder „anzeigen“ wollte, ist hier richtig, und eine gute Seite hat gegen eingesessene Konkurrenz bessere Aussichten als zwei dünne.
Was in einen JSON-Formatierer eingefügt wird, ist fast immer eine Antwort aus einem System, an dem jemand arbeitet — samt allem, was sie enthält: Kundendaten, interne Kennungen, gelegentlich ein Token in einem Feld, in dem es nicht sein sollte.
Das an einen fremden Server zu schicken, damit er Zeilenumbrüche einfügt, ist ein sehr schlechtes Tauschgeschäft. Die Arbeit erledigt der eingebaute Parser deines Browsers in Millisekunden, und das Netzwerk-Panel zeigt dabei nichts.
JSON verbietet nicht, denselben Schlüssel zweimal in ein Objekt zu schreiben — die Spezifikation nennt das Verhalten schlicht undefiniert. In der Praxis behalten fast alle Parser den letzten, auch der im Browser, und das heißt: Ein Dokument mit doppeltem Schlüssel geht hier durch und kommt einfach kürzer wieder heraus.
Das ist eine der wenigen Stellen, an denen Formatieren tatsächlich Daten verliert, und deshalb steht es hier. Wenn eine formatierte Datei kleiner ist, als sie sein sollte, ist ein doppelter Schlüssel die erste Vermutung — und die Ursache liegt fast immer bei einem Generator, der zwei Quellen zusammenschreibt, ohne zu prüfen.
Formatiertes JSON besteht typischerweise zu zwanzig bis vierzig Prozent aus Leerraum. Das klingt nach viel und ist über das Netz meist bedeutungslos, weil Antworten komprimiert übertragen werden und gzip mit Folgen von Leerzeichen ausgezeichnet umgeht — komprimiert liegt der Unterschied oft unter fünf Prozent.
Ins Gewicht fällt es dort, wo nicht komprimiert wird: in einer Umgebungsvariablen, einer Datenbankspalte, einer einzelnen Logzeile, einem Feld mit harter Längenbegrenzung. Wer eine dieser Grenzen vor sich hat, will die Seite zum Minifizieren; wer eine Datei lesen will, ist hier richtig.
Nein. Parsen und Ausgeben passieren beide in dieser Seite, und im Netzwerk-Panel ist zu sehen, dass nichts dein Dokument trägt. Das wiegt hier schwerer als bei den meisten Werkzeugen: Was Leute in einen JSON-Formatierer einfügen, ist meist eine API-Antwort aus einem System, an dem sie arbeiten.
Weil JSON keine Kommentare hat. Eine Datei mit // oder einem Komma vor der schließenden Klammer ist JSON5 oder JSONC — ähnlich aussehende, andere Sprachen, und genau das, was tsconfig.json ist. Die Ablehnung sagt dir, dass ein strenger Parser sie ebenfalls ablehnen wird, und das ist nützlicher, als die Kommentare stillschweigend zu entfernen.
Nicht deren Bedeutung, aber die Bytes ändern sich: Zahlen werden in kürzester exakter Form neu geschrieben, doppelte Schlüssel fallen auf den letzten zusammen, unnötige Maskierungen entfallen. Das macht jedes Parsen-und-neu-Ausgeben. Wenn du die Bytes exakt brauchst, etwa für eine Signatur oder Prüfsumme, formatiere gar nicht erst.
Nur wenn du gleich zwei Dokumente vergleichst. Sortiert man beide Seiten, zeigt der Vergleich die tatsächliche Änderung statt jeder Zeile, weil zwei Systeme dasselbe Objekt oft unterschiedlich anordnen. Die Reihenfolge von Arrays wird nie angetastet — ein Array ist eine Folge, und sie zu sortieren ändert die Daten.
So groß, wie dein Browser es in einem Textfeld hält. Es gibt keinen Server, der die Arbeit macht, also wird nichts gemessen — aber ein Dokument von mehreren Megabyte lässt den Tab bei jedem Tastendruck nachdenken, und in dieser Größenordnung bist du mit dem Formatierer in deinem Editor besser bedient.