Was Unstringify bedeutet
Wenn JSON in einem String gespeichert wird, wird jedes doppelte Anführungszeichen darin als \" geschrieben, jeder Zeilenumbruch als \n und jeder Backslash als \\. Das siehst du in Logdateien, Message Queues, Webhook-Payloads, den Entwicklertools des Browsers und in Datenbankspalten, die JSON als Text speichern. Gültig ist das schon, aber schwer zu lesen:
"{\"name\":\"Ada\",\"tags\":[\"admin\",\"dev\"]}"
Unstringify macht das Escapen rückgängig und gibt dir den ursprünglichen Wert zurück. Ist dieser Wert JSON, formatiert das Tool ihn außerdem, damit du ihn lesen kannst.
So nutzt du es
- Füge den escapten String in das linke Feld ein, klicke auf Datei öffnen oder auf Beispiel.
- Das Ergebnis erscheint beim Tippen rechts.
- Stell die Optionen ein:
- Verschachtelte Strings entpacken macht weiter, wenn das Ergebnis selbst wieder ein escapter String ist. Diese Option ist standardmäßig an.
- Wenn das Ergebnis JSON ist lässt dich 2 oder 4 Leerzeichen Einrückung wählen oder Unverändert lassen.
- Klicke auf Kopieren oder auf Herunterladen, um das Ergebnis als Textdatei zu speichern.
Die Zeile unter den Feldern sagt dir, ob das Ergebnis gültiges JSON ist und wie viele Schichten entpackt wurden.
Beispiele
Der String von oben wird mit Wenn das Ergebnis JSON ist auf 2 Leerzeichen zu:
{
"name": "Ada",
"tags": [
"admin",
"dev"
]
}
Escapter Text ohne äußere Anführungszeichen funktioniert auch. Diese Eingabe:
Line one\nLine two\t(tabbed)
ergibt zwei Zeilen, mit einem echten Tab vor (tabbed):
Line one
Line two (tabbed)
Unicode-Escapes werden dekodiert. "Café 東京" wird zu Café 東京. Das ist besonders bei deutschen Texten nützlich, denn viele Systeme schreiben Umlaute als \u-Codes. Aus "Gr\u00fc\u00dfe aus K\u00f6ln" wird wieder „Grüße aus Köln“.
Doppelt kodierte Strings
Manchmal werden Daten zweimal stringifiziert. Dann häufen sich die Backslashes:
"\"{\\\"event\\\":\\\"signup\\\",\\\"user\\\":7}\""
Mit Verschachtelte Strings entpacken an entpackt das Tool beide Schichten und meldet „Das Ergebnis ist gültiges JSON. 2 Schichten entpackt.“ Mit Unverändert lassen ist das Ergebnis:
{"event":"signup","user":7}
Mit Verschachtelte Strings entpacken aus hält es nach einer Schicht an, und du siehst den inneren String, noch escaped:
"{\"event\":\"signup\",\"user\":7}"
Das ist praktisch, wenn du genau sehen willst, was jede Schicht enthielt.
Fehlermeldungen
Ist die Eingabe kein gültiger JSON-String, bekommst du Zeile und Spalte des Problems. Echte Beispiele:
| Eingabe | Meldung |
|---|---|
"bad \q escape" |
Zeile 1, Spalte 6: Ungültige Escape-Sequenz \q |
He said "hi" |
Zeile 1, Spalte 9: Ein doppeltes Anführungszeichen ist nicht als \" escaped |
"unterminated |
Zeile 1, Spalte 1: String nicht geschlossen: Das schließende doppelte Anführungszeichen fehlt |
JSON erlaubt nur diese Escapes: \", \\, \/, \b, \f, \n, \r, \t und \u mit vier Hex-Ziffern. Escapes aus anderen Sprachen, etwa \x41 oder \', sind kein gültiges JSON. Klicke auf In der Eingabe zeigen, um zum Problem zu springen.
So funktioniert es
Das Tool liest deine Eingabe als JSON-String-Literal und ergänzt die äußeren Anführungszeichen, falls sie fehlen. Es dekodiert die Escapes nach den JSON-Regeln. Beginnt das Ergebnis mit einem doppelten Anführungszeichen, ist selbst ein gültiger JSON-String, und ist Verschachtelte Strings entpacken an, dekodiert es erneut. Ist das Ergebnis am Ende ein JSON-Objekt oder -Array, wird es mit der gewählten Einrückung formatiert. Zahlen darin bleiben genau so, wie sie geschrieben wurden. Alles passiert in deinem Browser.
Tipps
- Ist das Ergebnis kein gültiges JSON, wird es als normaler Text angezeigt. Das ist richtig für Strings, die nie JSON waren.
- Kopier einen Wert direkt aus einer Logzeile, mitsamt den Anführungszeichen, damit an keinem Ende ein Zeichen fehlt.
- Wenn in der Ausgabe verirrte
\r-Zeichen stehen, hatte der ursprüngliche Text Windows-Zeilenenden.
Andere Wege
JavaScript. JSON.parse(str) dekodiert eine Schicht. Ruf es für einen doppelt kodierten Wert noch einmal auf das Ergebnis auf und formatiere dann mit JSON.stringify(value, null, 2).
Python. json.loads(s) dekodiert einen JSON-String. Für einen doppelt kodierten String rufst du es zweimal auf.
jq. jq -r . file.json gibt einen JSON-String als rohen Text aus, und jq 'fromjson' parst einen String, der JSON enthält.
Ähnliche Tools
Für den umgekehrten Weg, also Text in einen JSON-String zu escapen, nimm Text in JSON-String umwandeln. Um das Ergebnis zu validieren oder neu zu formatieren, nimm den JSON Formatter. Um es in YAML zu verwandeln, nimm den Konverter JSON in YAML.