UTILS.
100 % im Browser
{ }

JS-Objekt zu striktem JSON

Reparieren Sie ein lockeres JavaScript-Objektliteral — nicht zitierte Schlüssel, einfache Anführungszeichen, nachgestellte Kommas, Kommentare — zu striktem gültigem JSON, ohne eval.

— Ausgabe erscheint hier —

Über dieses Tool

Das Tool JS-Objekt zu striktem JSON repariert ein lockeres JavaScript- oder JSON5-artiges Objektliteral zu striktem, gültigem JSON. Es basiert auf einem handgeschriebenen Tokenizer — es verwendet niemals eval oder new Function — sodass es unter einer strikten Content Security Policy sicher ist und das Einfügen nicht vertrauenswürdigen Textes sicher ist. Alles läuft in Ihrem Browser.

Es akzeptiert die Dinge, die echtes JSON ablehnt: nicht zitierte Bezeichner-Schlüssel, einfach zitierte Strings, nachgestellte Kommas vor ] oder }, // Zeilen- und /* Block */-Kommentare, hexadezimale (0xFF), oktale und binäre Literale, Zahlen mit führendem Plus und führendem Punkt (+1, .5) sowie die Werte undefined, NaN und Infinity. Schlüssel werden mit doppelten Anführungszeichen neu zitiert, Strings werden korrekt neu escapt, Kommentare und nachgestellte Kommas werden entfernt, und Zahlen werden zu einfachen JSON-Zahlen normalisiert. Sie wählen, wie undefined behandelt wird (in null umwandeln oder den Schlüssel weglassen) und nicht-endliche Zahlen (in null umwandeln oder einen Fehler auslösen), dann wird der Wert mit JSON.stringify bei Ihrer gewählten Einrückung neu serialisiert — 2 Leerzeichen, 4 Leerzeichen, Tabs oder minifiziert.

Wenn die Eingabe nicht geparst werden kann, meldet das Tool den ersten Syntaxfehler mit Zeile und Spalte, sodass Sie das Problem schnell finden können. Dies ergänzt einen strikten JSON-Formatierer, der lockere Eingaben einfach ablehnt — hier ist das Ziel, kopierte Konsolenausgaben, Konfigurationsschnipsel und handbearbeitete Objekte in JSON zu retten, das jeder Parser akzeptiert.

Häufig gestellte Fragen

Welche lockere Syntax akzeptiert es?
Nicht zitierte Schlüssel, einfach zitierte Strings, nachgestellte Kommas, // und /* */-Kommentare, hexadezimale/oktale/binäre Zahlen, Zahlen mit führendem Plus und führendem Punkt sowie die Literale undefined, NaN und Infinity — die üblichen Dinge, die kopierte JS-Objekte als JSON ungültig machen.
Verwendet es eval zum Parsen?
Nein. Es verwendet einen handgeschriebenen Tokenizer und einen Recursive-Descent-Parser, niemals eval oder new Function, sodass es unter einer strikten Content Security Policy funktioniert und für nicht vertrauenswürdige Eingaben sicher ist. Es erzeugt immer nur Daten und führt niemals Code aus.
Wie werden undefined, NaN und Infinity behandelt?
JSON hat keine solchen Werte. Sie wählen: undefined kann zu null werden oder seinen Schlüssel weglassen, und NaN/Infinity können zu null werden oder einen Fehler auslösen. Dies hält die Ausgabe in jedem Fall strikt gültig als JSON.
Was passiert, wenn die Eingabe ungültig ist?
Der Parser stoppt beim ersten echten Syntaxfehler und meldet ihn mit Zeile und Spalte, wo er aufgetreten ist, sodass Sie das störende Zeichen lokalisieren und beheben können, statt zu raten.

Weitere Tools