JSON-Formatierer
JSON formatieren, minimieren und validieren - und wenn es nicht geparst werden kann, genau erfahren, wo der Fehler liegt.
Eingabe
0 ZeichenAusgabe
JSON formatieren, minimieren und validieren - und wenn es nicht geparst werden kann, genau erfahren, wo der Fehler liegt.
JSON aus einem API-Log oder einer Konfigurationsdatei ist meist eine einzige lange Zeile, und JSON, das sich nicht parsen lässt, schlägt meist an einer Stelle fehl, die man nicht sieht. Dieses Tool rückt es ein, damit Sie es lesen können, minimiert es, wenn Sie es klein brauchen, und nennt Ihnen bei fehlerhaftem JSON die Zeile und Spalte und zeigt Ihnen diese Zeile.
Meist geht es hier nicht darum, JSON hübsch zu machen - Sie sind hier, weil etwas es abgelehnt hat, ohne zu sagen, warum. Der Parser meldet die Zeile, die Spalte und was er erwartet hat, und das Tool gibt diese Zeile zusammen mit den beiden umgebenden aus. Ein fehlendes Komma vierhundert Zeilen tief in einer Konfiguration ist eine Sache von dreißig Sekunden, sobald man weiß, wo es sitzt.
JSON hat beides nie erlaubt, aber die Dateien, die man tatsächlich in die Hand gedrückt bekommt - tsconfig, VS-Code-Einstellungen, alles von Hand Bearbeitete - sind voll davon. Das Ankreuzen der Option entfernt sie vor dem Parsen, und das Tool gibt dann an, wie viele Kommentare und wie viele Kommas entfernt wurden. Es ist optional und wird genau gemeldet, weil ein Formatierer, der Ihr Dokument still verändert, schlimmer ist als einer, der es ablehnt.
Es rät nicht, was Sie gemeint haben. Über die beiden oben genannten Entfernungen hinaus wird nichts repariert: eine nicht geschlossene Klammer, ein Schlüssel in einfachen Anführungszeichen oder ein Schlüssel ohne Anführungszeichen wird gemeldet, nicht umgeschrieben. Schlüssel sortieren und neu einrücken ändern nie die Reihenfolge eines Arrays und nie einen String. Der nächste Abschnitt nennt die wenigen Fälle, in denen die Ausgabe trotzdem von Ihrer Eingabe abweichen kann.
Ihr JSON wird geparst und neu ausgegeben, daher kommen einige Dinge normalisiert zurück. Zahlen werden neu geschrieben: 1.50 wird zu 1.5, 1E3 zu 1000.0 und -0 zu 0, und eine Dezimalzahl mit mehr Stellen, als ein 64-Bit-Float fassen kann, wird gerundet (0.1000000000000000055 wird zu 0.1). Ganze Zahlen bleiben bis 4.300 Stellen exakt erhalten (längere werden abgelehnt). Wiederholt ein Objekt einen Schlüssel, bleibt nur der letzte Wert erhalten, ohne Warnung. NaN, Infinity und -Infinity werden akzeptiert und unverändert ausgegeben, obwohl Standard-JSON (RFC 8259) sie nicht erlaubt, und eine Zahl, die für einen Float zu groß ist, etwa 1e400, wird als Infinity ausgegeben. Wenn etwas davon für das Zielsystem wichtig ist, prüfen Sie es selbst, bevor Sie einem fehlerfreien Ergebnis vertrauen.
Es wird zum Parsen an den Server gesendet und in derselben Antwort direkt zurückgeschickt. Nichts wird auf die Festplatte geschrieben, zwischengespeichert oder protokolliert, und der Nutzungsdatensatz enthält nur Zählwerte - Größe, Verschachtelungstiefe, gewählter Modus - niemals das Dokument.
Meist wegen Kommentaren, abschließenden Kommas, einfachen Anführungszeichen oder unquotierten Schlüsseln - alles üblich in Konfigurationsdateien und nichts davon gültiges JSON. Kreuzen Sie "Kommentare und abschließende Kommas zulassen" für die ersten beiden an; die anderen sind tatsächlich ungültig und müssen korrigiert werden.
Bis zu 2.000.000 Zeichen pro Anfrage; längere Eingaben werden mit ihrer genauen Länge abgelehnt. Für Dateien dieser Größe ist ein Kommandozeilen-Tool wie jq das bessere Werkzeug.
Log-Pipelines und Streaming-Loader lesen ein JSON-Objekt pro Zeile statt eines großen Arrays. Wählen Sie es, und ein Array oberster Ebene kommt als ein kompakter Datensatz pro Zeile zurück.
Nein. Die Reihenfolge der Objektschlüssel hat in JSON keine Bedeutung, und die Array-Reihenfolge - die bedeutsam ist - wird nie angetastet. Das Sortieren gibt es, damit zwei Versionen desselben Dokuments ohne Rauschen verglichen werden können.
In Excel für Microsoft 365 speichern Sie es als .json-Datei und wählen Data > Get Data > From File > From JSON (Daten > Daten abrufen > Aus Datei > Aus JSON). Power Query öffnet es: Ein Array auf oberster Ebene erscheint als List, To Table (In Tabelle) macht daraus eine Spalte mit Records, und die Erweitern-Schaltfläche (zwei Pfeile) im Spaltenkopf verteilt jeden Schlüssel auf eine eigene Spalte; das Erweitern eines verschachtelten Arrays erzeugt eine Zeile pro Element. Power Query braucht genau ein gültiges JSON-Dokument, also beheben Sie Fehler zuerst hier, wo Sie Zeile und Spalte sehen, und speichern dann die Ausgabe von Verschönern oder Minifizieren; die Ausgabe JSON Lines ist für Log-Werkzeuge gedacht. Dieses Tool selbst wandelt JSON nicht in CSV oder Excel um.
Python bringt einen Prüfer mit: python -m json.tool data.json gibt das Dokument mit 4 Leerzeichen Einrückung aus oder bricht mit einer Meldung wie Expecting ',' delimiter: line 3 column 3 ab. Mit installiertem jq formatiert jq . data.json das Dokument, und jq empty data.json prüft nur und gibt bei gültiger Datei nichts aus. Beide akzeptieren keine Kommentare und keine nachstehenden Kommas, eine Konfigurationsdatei mit solchen scheitert also; fügen Sie sie hier ein und aktivieren Sie "Kommentare und nachstehende Kommas zulassen", um zu sehen, was entfernt wurde.
Der Parser hat einen Objektschlüssel erwartet und etwas anderes gefunden. Meist stehen die Schlüssel in einfachen oder gar keinen Anführungszeichen, etwa {'name': 'Asha'} aus Python oder JavaScript kopiert, was in Zeile 1, Spalte 2 abbricht: JSON verlangt doppelte Anführungszeichen um jeden Schlüssel und jeden String, und dieses Tool schreibt Anführungszeichen nie um, ändern Sie sie also selbst. Dieselbe Meldung an einer schließenden geschweiften Klammer, etwa bei {"a": 1,}, bedeutet ein nachstehendes Komma; aktivieren Sie "Kommentare und nachstehende Kommas zulassen", um es zu entfernen. Expecting value bei True, False oder None bedeutet Python-Werte: JSON schreibt true, false und null klein. In Python liefert json.dumps(data) gültiges JSON, print(data) nicht. Fehler werden so angezeigt, wie der Python-Parser sie formuliert, auf Englisch, damit Sie die Meldung unverändert suchen können.
Der Parser hat einen vollständigen JSON-Wert gelesen und danach weiteren Text gefunden. Häufige Ursachen: ein Log im Format JSON Lines (NDJSON) mit einem Objekt pro Zeile, das in Zeile 2, Spalte 1 abbricht; zwei hintereinander eingefügte Dokumente; oder ein //-Kommentar nach der letzten schließenden Klammer, den "Kommentare und nachstehende Kommas zulassen" entfernt. Dieses Tool prüft jeweils ein Dokument: Fügen Sie einen einzelnen Datensatz ein oder setzen Sie die Datensätze, durch Kommas getrennt, in [ ]; mit JSON Lines werden sie danach wieder einer pro Zeile ausgegeben.