100 % lokal — Ihre Daten verlassen nie Ihren Browser

Text zu JSON-String — in ein Payload einfügen

Text in ein JSON-String-Literal verwandeln, Anführungszeichen inklusive. Zwei unsichtbare Zeilenzeichen werden mit escaped — der Wert passt in ein curl.

Sofort Privat Null Cookies

Text-Eingabe

JSON String-Ausgabe

Was dieses Werkzeug tut

Ihr Text wird zu einem JSON-String-Literal: umschließende Anführungszeichen, und jedes Zeichen, das nicht roh stehen darf, durch seine Escape-Form ersetzt.

  • " wird zu \", ein Backslash wird zu \\;
  • ein Zeilenumbruch wird zu \n, ein Tabulator zu \t, ein Wagenrücklauf zu \r;
  • andere Steuerzeichen werden zu \u00XX.

é und 😀 bleiben, wie sie sind. JSON ist Unicode, und eine lesbare Zeichenkette ist besser als eine Wand aus Escapes.

Zwei Zeichen, die gewöhnliche Kodierer roh lassen

U+2028 (Zeilentrenner) und U+2029 (Absatztrenner) kommen als \u2028 und \u2029 heraus. Ein üblicher JSON-Kodierer lässt sie literal.

Beide Schreibweisen sind gültiges JSON. Die escapte ist sicherer, und der Grund ist historisch und weiterhin aktuell: In JavaScript vor ES2019 waren diese beiden Zeichen Zeilenendezeichen, ein String-Literal mit einem rohen davon war also ein Syntaxfehler. Alles, was JSON nimmt und als JavaScript auswertet — ein altes eval, ein JSONP-Endpunkt, ein Bundler, der eine Datendatei einbettet — läuft hinein. Escapen kostet drei Zeichen und beseitigt die ganze Fehlerklasse.

Eine einzelne Surrogathälfte erzeugt keine kaputte Ausgabe

Text kann die Hälfte eines Surrogatpaars enthalten: eine an falscher Stelle geschnittene Zeichenkette, ein abgeschnittenes Feld aus einer Datenbank. Die Ausgabe escapt sie als \ud800, statt sie roh auszugeben.

Das zählt, weil eine rohe einzelne Surrogathälfte in UTF-8 überhaupt nicht kodierbar ist. Escapt bleibt das JSON gültig, bleibt UTF-8, und das beschädigte Zeichen ist in der Ausgabe sichtbar, statt die Datei zu beschädigen, die sie trägt.

Was nicht escapt wird

Der Schrägstrich. \/ ist zulässiges JSON, und manche Kodierer geben ihn aus, damit </script> nie in der Ausgabe auftaucht, aber vorgeschrieben ist er nicht und er macht das Ergebnis schlechter lesbar.

Wenn Sie das Ergebnis in eine HTML-Seite einbetten, behandeln Sie </script> auf HTML-Ebene: ein HTML-Parser schließt das Element bei dieser Sequenz, wo immer sie auftaucht, und kein JSON-Escaping ändert daran etwas.

Datenschutz ab Werk

Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.

Häufige Fragen

Warum wird é nicht als \u00e9 escapt?
Weil JSON ein Unicode-Format ist und `é` ein zulässiges Zeichen in einer Zeichenkette. Die Dokumentkodierung trägt es. Alles Nicht-ASCII zu escapen ist nur nötig, wenn der Kanal ausschließlich ASCII kennt — dafür gibt es `ensure_ascii=True` in Python — und macht die Ausgabe sonst nur größer und schlechter lesbar.
Warum enthält die Ausgabe die Anführungszeichen?
Weil eine JSON-Zeichenkette *aus* den Anführungszeichen plus dem escapten Inhalt besteht. Nur das Innere zu liefern würde dazu einladen, es dort einzufügen, wo die Anführungszeichen fehlen — genau dort hört das Escapen auf zu stimmen. Sie können sie entfernen, wenn Ihr Template sie schon liefert.
Kann ich das direkt in ein <script>-Tag einfügen?
Nicht blind. Das Ergebnis ist gültiges JSON, und die beiden Zeilenendezeichen, die JavaScript-Literale zerbrachen, sind escapt. Ein HTML-Parser beendet das script-Element aber weiterhin beim ersten `</script>` im Quelltext, ob in einer Zeichenkette oder nicht — Text mit dieser Sequenz braucht eine eigene Behandlung auf HTML-Ebene.
` im Quelltext, ob in einer Zeichenkette oder nicht — Text mit dieser Sequenz braucht eine eigene Behandlung auf HTML-Ebene."}}]}

Ähnliche Konverter