100% ローカル — データがブラウザの外に出ることはありません

テキストをJSON文字列に変換|payloadにそのまま貼れます

テキストをJSONの文字列リテラルに変換します。引用符も付き、目に見えない行終端2文字も逃がされるので、curl の本文やテストデータにそのまま貼り付けられます。

高速 プライベート Cookieゼロ

Text 入力

JSON String 出力

このツールの動作

入力は JSON の文字列リテラルになります。前後に引用符が付き、そのままでは書けない文字はすべて保護形式に置き換わります。

  • " は \" に、逆斜線は \\ に。
  • 改行は \n、タブは \t、復帰は \r に。
  • ほかの制御文字は \u00XX に。

é と 😀 はそのまま残ります。JSON は Unicode ですし、読める文字列のほうが保護記号の壁より優れています。

通常の実装が素通しにする二文字

U+2028(行区切り)と U+2029(段落区切り)は \u2028、\u2029 として出ます。標準的な JSON の実装はこれらを素のまま残します。

どちらの書き方も妥当な JSON です。保護したほうが安全で、その理由は歴史的でありながら今も生きています。ES2019 より前の JavaScript では、この二文字は行終端子でした。素のまま含む文字列リテラルは構文エラーだったのです。JSON を受け取って JavaScript として評価するもの——古い eval、JSONP のエンドポイント、データファイルを埋め込むバンドラー——はここに落ちます。保護の費用は三文字で、この種の障害がまるごと消えます。

孤立したサロゲートでも出力は壊れない

テキストにはサロゲート対の片割れが入り得ます。誤った位置で切られた文字列、データベースから出てきた途中で切れた列などです。出力はそれを素のまま出さず、\ud800 として保護します。

素の孤立サロゲートは UTF-8 にそもそも符号化できないので、これは重要です。保護すれば JSON は妥当なまま、UTF-8 のまま保たれ、壊れた文字は出力の中に見える形で残ります。運んでいるファイル自体を壊すことはありません。

保護しないもの

斜線です。\/ は正当な JSON で、</script> が出力に現れないようにこれを出す実装もありますが、必須ではなく、結果が読みにくくなります。

結果を HTML ページに埋め込むなら、</script> は HTML の層で扱ってください。HTML のパーサーはその並びが現れた場所で要素を閉じます。JSON をどれだけ保護しても、そこは変わりません。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

なぜ é は \u00e9 に変換されないのですか。
JSON は Unicode の形式で、`é` は文字列の中で正当な文字だからです。文書の符号化がそれを運びます。非 ASCII をすべて変換する必要があるのは経路が ASCII しか通さないときだけで、Python の `ensure_ascii=True` はそのためにあります。それ以外では出力が大きく読みにくくなるだけです。
なぜ出力に引用符が含まれるのですか。
JSON の文字列とは、引用符と保護済みの中身を合わせたもの*そのもの*だからです。中身だけを渡せば、引用符のない場所に貼る誘いになります。そこはまさに、この保護が正しくなくなる場所です。テンプレート側が引用符を用意しているなら外してください。
これをそのまま <script> タグに貼れますか。
無条件には貼れません。出力は妥当な JSON で、JavaScript のリテラルを壊していた行終端子二つは保護済みです。しかし HTML のパーサーは、文字列の中かどうかに関係なく、原稿に最初に現れた `</script>` で script 要素を閉じます。その並びを含む文字列は HTML の層で別に処理する必要があります。
` で script 要素を閉じます。その並びを含む文字列は HTML の層で別に処理する必要があります。"}}]}

関連ツール