araç köşesi

JSON escapen / unescapen

JSON oder beliebigen Text in ein String-Literal für Code umwandeln oder einen maskierten String zurück in lesbares JSON verwandeln

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

Typisch sind zwei Aufgaben. Die erste: JSON in einen String packen. Brauchen Sie JSON in einem Unit-Test, einer Datenbankspalte oder einem Feld eines anderen JSON-Dokuments, fügen Sie das JSON links ein und lassen Escapen ausgewählt. Rechts erscheint ein einzeiliger String in doppelten Anführungszeichen; vor jedem inneren Anführungszeichen steht ein Backslash, jeder Zeilenumbruch wird \n: {"name":"x"} → "{\"name\":\"x\"}". Diesen String können Sie direkt in JavaScript-, Java- oder C#-Code einfügen. Die zweite Aufgabe ist die Umkehrung: Zeigt eine Logzeile, eine API-Antwort oder eine Fehlermeldung maskiertes JSON wie "{\"name\":\"x\"}", fügen Sie es ein und wählen Unescapen. Die äußeren Anführungszeichen fallen weg, die Escapes werden aufgelöst, und gültiges JSON erscheint mit 2 Leerzeichen eingerückt. Wurde der String zweimal maskiert (Sie sehen \\\"), erkennt das Werkzeug das und löst eine weitere Ebene auf. Für SQL werden einfache Anführungszeichen verdoppelt (O'Brien → 'O''Brien'), für eine CSV-Zelle doppelte. Mit Java / C# werden ä, ö, ü und ß als \u00e4 usw. geschrieben und überstehen so jede Kodierung der Quelldatei.

Dieses Werkzeug ist auch als json escapen, json string escapen, json unescape, json in string umwandeln, string in json umwandeln, json escape online bekannt.

Was ist Escape-Zeichen?

Ein Escape-Zeichen hebt die Sonderbedeutung des folgenden Zeichens auf; in JSON, JavaScript, Java und C# ist es der Backslash (\). Weil ein String von doppelten Anführungszeichen begrenzt wird, schreibt man ein Anführungszeichen darin als \", damit der String dort nicht endet; der Backslash selbst wird \\. Auch unsichtbare Zeichen werden so geschrieben: \n ist ein Zeilenumbruch, \t ein Tabulator, \u00fc die Codenummer von ü.

Was ist String-Literal?

Ein String-Literal ist Text, der in Quellcode oder JSON zwischen Anführungszeichen steht: "Hallo". Literal und enthaltener Text sind nicht dasselbe; das Literal "5\" Bildschirm" enthält den Text 5" Bildschirm. Dieses Werkzeug übersetzt zwischen beiden Formen: Es baut aus Text ein Literal (escapen) oder holt den Text aus einem Literal heraus (unescapen), jeweils nach den Regeln der gewählten Sprache.

Was ist der Unterschied zwischen JSON-Escaping und URL-Kodierung?

JSON-Escaping dient dazu, Text sicher in ein String-Literal zu setzen: Nur Anführungszeichen, Backslashes und Steuerzeichen ändern sich, Buchstaben und Leerzeichen bleiben. URL-Kodierung macht Text zum Teil einer Webadresse: Ein Leerzeichen wird %20, ü wird %C3%BC, alles außerhalb von reinem ASCII wird prozentkodiert. Soll JSON in einen URL-Parameter, braucht es beides nacheinander; für Code oder ein anderes JSON-Feld reicht JSON-Escaping. Base64 ist wieder etwas anderes: Es transportiert Text in unlesbarer Form.

Welches Zeichen wird zu was

In einem JSON- oder JavaScript-String würde ein doppeltes Anführungszeichen den String beenden, daher wird es als \" geschrieben; ein Backslash leitet eine Escape-Sequenz ein und wird zu \\. Unsichtbare Zeichen wie Zeilenumbruch, Tabulator und Wagenrücklauf dürfen nicht roh im String stehen und werden zu \n, \t und \r. Andere Steuerzeichen erscheinen als \u001f. Auch U+2028 und U+2029 werden maskiert, weil ältere JavaScript-Engines sie im String als Zeilenumbruch werten.

Das Ziel Java / C# nutzt dieselben Escapes und schreibt zusätzlich jedes Nicht-ASCII-Zeichen als \uXXXX: ü → \u00fc, ß → \u00df. So bleiben Umlaute auch in einer .java-Datei mit anderer Kodierung erhalten, und die Ausgabe ist weiterhin gültiges JSON. Das Ziel SQL verdoppelt nur einfache Anführungszeichen, das Ziel CSV nur doppelte; Zeilenumbrüche bleiben in der Zelle.

  • " → \" · \ → \\ · Zeilenumbruch → \n · Tabulator → \t
  • ü → \u00fc (nur beim Ziel Java / C#)
  • O'Brien → 'O''Brien' (SQL)
  • 5" Bildschirm → "5"" Bildschirm" (CSV-Zelle)

Fallen: doppelte Maskierung und der Backslash in MySQL

Wird JSON als String in einem anderen JSON gespeichert und das Ganze erneut maskiert, werden Anführungszeichen zu \\\" — in Logs häufig. Beim Unescapen löst das Werkzeug eine Ebene auf; ist das Ergebnis noch ein JSON-String in Anführungszeichen, eine weitere, und es nennt die Zahl der Ebenen. Gültiges JSON wird dann eingerückt, außer es enthält eine Zahl, die JSON.parse verändern würde (1.0 oder eine 17-stellige ID); dann bleibt der Text unverändert.

Standard-SQL maskiert ein einfaches Anführungszeichen durch Verdoppeln, und nur das tut das Werkzeug. MySQL wertet im Standardmodus auch den Backslash als Escape: Aus dem Pfad C:\neu wird ein Zeilenumbruch plus "eu". Nutzen Sie MySQL und enthält der Text Backslashes, verwenden Sie eine parametrisierte Abfrage. Aus demselben Grund schützt es nicht vor SQL-Injection, Benutzereingaben hiermit zu maskieren und in eine Abfrage zu kleben.

Häufige Fragen

Wie wandle ich JSON in einen String um?

Fügen Sie das JSON links ein und lassen Sie Escapen und JSON / JavaScript ausgewählt. Rechts erscheint ein einzeiliger String in doppelten Anführungszeichen mit \" für innere Anführungszeichen und \n für Zeilenumbrüche. Diesen String fügen Sie unverändert in Ihren Code oder ein anderes JSON-Feld ein.

Wie wird ein maskierter JSON-String wieder normales JSON?

Fügen Sie den maskierten String ein (etwa "{\"a\":1}") und wählen Sie Unescapen. Die äußeren Anführungszeichen verschwinden, \" wird zum Anführungszeichen, \n zum Zeilenumbruch. Gültiges JSON wird mit 2 Leerzeichen eingerückt; ein zweimal maskierter String wird erkannt und eine Ebene weiter aufgelöst.

Warum erscheinen Umlaute als \u00fc?

Beim Ziel Java / C# wird jedes Nicht-ASCII-Zeichen als \uXXXX geschrieben; so übersteht es auch eine Quelldatei mit anderer Kodierung. Sollen ä, ö, ü und ß unverändert bleiben, wählen Sie das Ziel JSON / JavaScript.

Wird der eingefügte Text an einen Server gesendet?

Nein. Escapen und Unescapen laufen vollständig in Ihrem Browser; selbst JSON mit API-Schlüsseln, Passwörtern oder Kundendaten verlässt diese Seite nicht. Nach dem Laden funktioniert die Seite auch offline.