ToolActToolAct

JSON Escape-Werkzeug

Schnelle JSON-String-Escape und -Unescape

Eingabe
Zeichen: 0
Bytes: 0
Ausgabe
Zeichen: 0
Bytes: 0

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

  1. Text im Eingabefeld einfügen oder eingeben
  2. Auf ‚JSON Escape‘ klicken, um Sonderzeichen zu escapen (z. B. Apostroph in \')
  3. Auf ‚JSON Unescape‘ klicken, um escapte Zeichen wiederherzustellen (z. B. \' in Apostroph)
  4. 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

Text sicher in JSON-Strings einbettenWenn eine Fehlermeldung, ein SQL-Fragment, ein regulärer Ausdruck, ein Windows-Pfad oder ein mehrzeiliger Prompt als JSON-Stringwert verwendet werden soll, wandelt der Escape-Modus Anführungszeichen, Backslashes, Zeilenumbrüche und Steuerzeichen in JSON-sichere Sequenzen um. Die Zeichen- und Byte-Zählung hilft, das Anwachsen des Payloads zu bemerken, bevor er in eine API-Anfrage eingefügt wird. Alles wird im Browser über den Standard-JSON.stringify-Schritt verarbeitet, sodass der Quelltext die Seite nie verlässt.
Escape-Payloads aus Logs lesenAPI-Gateways und Logging-Systeme zeigen JSON-Stringwerte oft mit escapten Zeilenumbrüchen und Anführungszeichen. Der Unescape-Modus wandelt diese Sequenzen zurück in lesbaren Text und erleichtert die Prüfung von Stack-Traces, serialisierten Prompts, Webhook-Bodies und kopierten Konfigurationswerten. Das Unescaping nutzt den JSON.parse-Pfad des Browsers, sodass die wiederhergestellten Zeichen lokal bleiben und erst nach dem Kopieren die Ausgabe verlassen.
Problematische Texte lokal hin und her konvertierenDa das Tool auf den Browser-JSON-Parser und -Stringifier setzt, spiegelt es die normalen JSON-String-Escape-Regeln wider, anstatt einen eigenen Dialekt zu erfinden. Das macht es zu einem guten lokalen Notizblock, um zu prüfen, ob ein Wert in einem JSON-Dokument überlebt. Der Eingabestring wird nur im Browser verarbeitet – es erfolgt kein API-Aufruf, sodass Entwürfe mit Stack-Traces, Prompts oder unveröffentlichten Inhalten das Netzwerk nie passieren.
Werte für JSON-in-JSON-Felder escapenWenn ein Webhook-Payload ein serialisiertes JSON-Objekt als Stringfeld-Wert mitführen muss, wird das innere JSON durch den Escape-Modus geleitet, sodass der äußere Parser es weiterhin als einen String erkennt. Die Ausgabe mit einem Unescape-Durchlauf auf der Empfängerseite kombinieren, um die Hin- und Rückkonvertierung vor dem Versand zu bestätigen. Da das Escaping ein lokales Stringify ist, können Sonderfälle wie verschachtelte Anführungszeichen oder eingebettete \u-Sequenzen ausprobiert werden, ohne den Vertrag externen Tools auszusetzen.
Versteckte Steuerzeichen in kopiertem Text aufspürenEingefügter Text aus Terminals, PDFs oder Chat-Apps enthält oft NUL-Bytes, BEL oder vereinzelte CR-Zeichen, die nachfolgende JSON-Parser stillschweigend beschädigen. Das Escaping macht diese als \u0000-Sequenzen sichtbar, sodass sie geprüft und entfernt werden können, anstatt das Dokument in einen ungültigen Blobs zu verwandeln. Der Scan läuft vollständig gegen den JSON-Encoder der Seite, sodass eingefügte Strings mit privaten Inhalten sichtbar und umgeschrieben werden, ohne den Browser-Tab zu verlassen.

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\nLine2

Zeichenketten 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.