JSON Escape-Werkzeug
Schnelle JSON-String-Escape und -Unescape
Konvertierungsmethode wählen
Was ist JSON Escape?
JSON Escape ist der Prozess, Sonderzeichen in JSON-Strings in Escape-Sequenzen zu konvertieren. Häufige Escape-Zeichen sind: " wird zu \", \\ wird zu \\\\, Zeilenumbruch wird zu \n, Tab wird zu \t etc.
Verwendung: Wenn JSON-Daten in einen anderen JSON-String eingebettet werden sollen, wenn JSON-String-Konstanten mit Sonderzeichen im Code definiert werden, wenn JSON-Daten in Datenbank gespeichert werden, etc.
JSON-Escaping macht Zeichenketten sicher für die Verwendung innerhalb von JSON-Strings. Anführungszeichen, Backslashes, Zeilenumbrüche, Tabs und bestimmte Steuerzeichen müssen korrekt maskiert werden, damit Parser die Struktur nicht beschädigen. Das ist nützlich bei API-Payloads, Konfigurationswerten, Logs, eingebetteten Fehlermeldungen und Testdaten. Escaping validiert jedoch nicht das gesamte JSON-Dokument und schützt nicht automatisch vor falscher Einbettung in HTML oder JavaScript-Kontexte.Anleitung
So geht's
- Text im Eingabefeld einfügen oder eingeben
- Auf ‚JSON Escape‘ klicken, um Sonderzeichen zu escapen (z. B. Apostroph in \')
- Auf ‚JSON Unescape‘ klicken, um escapte Zeichen wiederherzustellen (z. B. \' in Apostroph)
- Die Ergebnisse erscheinen automatisch darunter und können kopiert werden
Hinweise zum Escaping
- Text nur für den jeweiligen Kontext escapen – JSON-Zeichenketten, JavaScript-Quellcode, URLs und HTML-Attribute haben unterschiedliche Escaping-Regeln.
- Prüfen Sie nach dem Unescaping Zeilenumbrüche, Backslashes und Anführungszeichen, bevor Sie den Text in Konfigurationsdateien einfügen.
Anwendungsfälle
Technisches Prinzip
JSON (RFC 8259) ist eine strenge Textgrammatik; jedes String-Literal muss in ASCII-Doppel-Anführungszeichen (U+0022) eingeschlossen sein, und jedes Zeichen, das diese Grammatik brechen könnte, muss als Backslash-Escape ausgedrückt werden. Die obligatorischen Escapes sind: doppeltes Anführungszeichen zu Backslash-Anführungszeichen, Backslash zu doppeltem Backslash und die 32 Steuerzeichen von U+0000 bis U+001F (einschließlich \b U+0008, \f U+000C, \n U+000A, \r U+000D, \t U+0009). Jedes Zeichen über U+001F darf als rohe UTF-8-Byte-Sequenz in der Zeichenkette erscheinen, einschließlich CJK-Ideogramme, Emoji, Akzentbuchstaben und anderer Ergänzungszeichen. Der Schrägstrich darf optional escaped werden (\/), aber die Konvention ist, ihn zu escapen, wenn das JSON in HTML-<script>-Tags eingebettet wird, damit die schließende-Script-Tag-Sequenz das umgebende Script-Element nicht vorzeitig schließt. In der Praxis treten zwei Escaping-Ebenen auf. JSON-Escape (die syntaktische Substitution) ist die einzige, die RFC 8259 verlangt: Sie stellt sicher, dass die Zeichenkette gültiges JSON ist, Punkt. Unicode-Escape (Umschreiben jedes Zeichens als \uXXXX oder \u{XXXXX}) ist eine Darstellungswahl, keine syntaktische Anforderung – sie ändert nur, wie die Bytes in der Datei aussehen, nicht was sie decodieren. CJK-Text ist in JSON bereits als rohe UTF-8-Bytes gültig; der Unicode-Escape-Modus der Seite schreibt ihn als \uXXXX um, was nützlich ist, wenn die Zeichenkette in eine Java- oder JavaScript-Quelldatei eingegeben wird, wo der umgebende Parser sonst mit mehrbytigem UTF-8 umgehen müsste, aber es fügt 4-6 Bytes pro Zeichen hinzt und verschlechtert die Lesbarkeit. Die Escape-Regeln haben Grenzfälle. JSON.parse ist streng bei führenden Nullen (01 ist ein Parse-Fehler, obwohl JavaScript es als Oktalzahl 1 akzeptieren würde); JSON.stringify in V8 erzeugt stets minimal notwendige Escapes (Steuerzeichen als \b/\n/\r/\t/\f wenn möglich, sonst als \uXXXX, und der Schrägstrich /, U+2028, U+2029 werden für menschenlesbare Ausgabe roh belassen). Ein alleinstehender Surrogat (ein High-Surrogate, dem kein Low-Surrogate folgt) ist gemäß RFC 8259 technisch gültiges JSON, aber JSON.parse im Strict-Modus oder in TypeScript lehnt ihn als InvalidString ab; der Escape-Modus der Seite ersetzt alleinstehende Surrogate durch \uFFFD (Ersatzzeichen), damit die Ausgabe durch jeden Standard-Parser roundtrip-fähig ist. Für die Einbettung in JavaScript-Quellcode benötigt der JSON-String eine dritte Escape-Ebene: JSON innerhalb eines JS-String-Literals muss die Backslashes selbst escapen. Der JS-String-Ausgabemodus der Seite fügt dieses doppelte Escaping hinzu, und die eval- oder JSON.parse-Schaltfläche zeigt, dass beide Kodierungen auf dieselbe Zeichenkette decodieren. In HTML-Einbetttungskontexten kommt eine vierte Ebene hinzu: <, > und & benötigen HTML-Entity-Escaping in der umgebenden Seite, und Attributwerte benötigen zusätzlich Anführungszeichen-Escaping. JSON-in-HTML ist berüchtigt gefährlich (die </script>-Falle oben) und sollte vermieden werden zugunsten sicherer Sinks wie textContent-Zuweisung oder JSON.stringify in einen <script type="application/json">-Block (später über script.textContent lesen, niemals eval). JSON5 (eine beliebte Obermenge) fügt einfache Anführungszeichen, mehrzeilige Strings, unquoted Keys, nachgestellte Kommas, NaN/Infinity und einzeilige //-Kommentare hinzu. Die Seite erzeugt keine JSON5-Ausgabe; wenn ein Roundtrip benötigt wird, verwenden Sie eine dedizierte Bibliothek.
- JSON-Strings (RFC 8259) müssen doppeltes Anführungszeichen zu Backslash-Anführungszeichen, Backslash zu doppeltem Backslash und die 32 Steuerzeichen U+0000..U+001F (\b \f \n \r \t, plus den Rest als \uXXXX) escapen. Alles über U+001F ist als rohes UTF-8 gültig, einschließlich CJK, Emoji und Akzentbuchstaben.
- Zwei Ebenen des 'Escape' treten auf: JSON-Escape (syntaktisch, erforderlich) macht die Zeichenkette zu gültigem JSON; Unicode-Escape (darstellerisch) schreibt Zeichen als \uXXXX um und ändert nur die Lesbarkeit, nicht die Gültigkeit.
- Optionales '/': / zu \/ ist in JSON erlaubt. Konvention: Beim Einbetten von JSON in HTML <script> escapen, damit die schließende-Script-Tag-Sequenz den umgebenden Tag nicht schließt.
- CJK wird in rohem UTF-8-JSON nicht escaped: Das Beispiel '你好' sind 6 rohe Bytes. Der Unicode-Escape-Modus der Seite schreibt es als \u4f60\u597d um zur Verwendung in Quelldateien, was Lesbarkeit gegen Kompatibilität tauscht.
- Alleinstehende Surrogate: Ein High-Surrogate (U+D800..U+DBFF), dem kein Low-Surrogate folgt, ist gemäß RFC 8259 technisch gültiges JSON, aber JSON.parse im Strict-Modus oder TypeScript lehnt es ab. Die Seite ersetzt alleinstehende Surrogate durch \uFFFD, damit die Ausgabe durch strenge Parser roundtrip-fähig ist.
- JSON.parse ist streng: Führende Nullen (01) sind ein Parse-Fehler, NaN/Infinity sind keine gültigen Literale, nachgestellte Kommas sind nicht erlaubt. JSON.stringify in V8 erzeugt stets minimal notwendige Escapes und lässt Schrägstrich / sowie U+2028/U+2029 der Lesbarkeit wegen roh.
- JSON-in-JS: Um einen JSON-String in einem JS-String-Literal einzubetten, die Backslashes verdoppeln. Der 'JS-String'-Ausgabemodus der Seite fügt diese Ebene hinzu; eval auf das Ergebnis liefert denselben String wie JSON.parse.
- JSON5-Obermenge: Einfache Anführungszeichen, mehrzeilige Strings, unquoted Keys, nachgestellte Kommas, NaN/Infinity, einzeilige //-Kommentare. Die Seite erzeugt strenges RFC-8259-JSON, kein JSON5.
Beispiele
Zeichenketten mit doppelten Anführungszeichen und Backslashes
Eingabe: He said "Hello\World"
Ausgabe: He said \"Hello\\World\"Zeichenketten mit Zeilenumbrüchen und Tabulatoren
Eingabe: Line1\tIndent\nLine2
Ausgabe: Line1\tIndent\nLine2Zeichenketten mit Chinesisch und doppelten Anführungszeichen
Eingabe: {"name": "Alice", "msg": "He said \"Hi\""}
Ausgabe: {\"name\": \"Alice\", \"msg\": \"He said \\\"Hi\\\"\"}FAQ
Was bewirkt das Escapen eines JSON-Strings?
Die Eingabe wird in Anführungszeichen gesetzt, und jedes Sonderzeichen wird durch seine JSON-sichere Escape-Sequenz ersetzt: " → \", \ → \\, Zeilenumbruch → \n, Tab → \t, Steuerzeichen → \u00NN. Das Ergebnis ist ein gültiges JSON-String-Literal, das du in ein anderes JSON-Dokument oder einen Code-Editor einfügen kannst.
Wofür brauche ich das?
Typische Fälle: eine mehrzeilige Nachricht in eine JSON-Konfigurationsdatei einbetten, einen JSON-String als Kommandozeilenargument übergeben, JSON in JSON verschachteln (z. B. ein API-Request-Body, der selbst ein JSON-codierter String ist), oder Benutzereingaben vor dem Logging bereinigen.
Ist Escaping dasselbe wie URL-Encoding?
Nein. JSON-Escaping nutzt \n, \", \u00XX. URL-Encoding nutzt %20, %22, %0A. Andere Kontexte, andere Escape-Regeln. Verwende das, was zum Zielformat passt.
Erkennt der Unescape-Modus jede JSON-Escape-Sequenz?
Ja – alle Standard-Escapes (\", \\, \/, \b, \f, \n, \r, \t, \uXXXX). Surrogate Pairs für Codepoints oberhalb von U+FFFF (\uD83D\uDE00 = 😀) werden zum eigentlichen Emoji zusammengesetzt. Fehlerhafte Escape-Sequenzen erzeugen einen Fehler, den du korrigieren kannst.
Was ist der Unterschied zwischen einem String escapen und ein Objekt stringifizieren?
Beim Escapen wird ein Stück Text in einen gequoteten JSON-String verwandelt. Beim Stringifizieren (JSON.stringify) wird ein JavaScript-Objekt zu einem vollständigen JSON-Dokument. Diese Seite macht das Erste; für das Zweite schreibst du das Objekt im Code-Editor als JSON oder nutzt einen JSON-Formatter.
Werden Steuerzeichen immer escaped?
Ja – JSON verlangt das. Zeilenumbrüche, Tabs, NULL und andere ASCII-Steuerzeichen (0x00–0x1F) müssen escaped werden, sonst ist das Ergebnis kein gültiges JSON. Manche Implementierungen escapen auch DEL (0x7F) und Zeichen oberhalb von U+FFFF; die Seite hält sich strikt an RFC 8259.
Werden die Daten irgendwohin gesendet?
Nein. Escapen und Unescapen laufen in deinem Browser. Eingefügter Text wird nicht hochgeladen.