JSON文字列エスケープ
任意のテキストやJSONを、有効なJSON文字列リテラルにブラウザ内でエスケープ。引用符・改行・タブ・Unicode・スラッシュに対応。完全プライベート、アップロードなし、即時変換。
オプション
JSONエスケープとは?
JSONエスケープとは、生の文字列を、JSONドキュメント内に安全に埋め込める形へ変換する処理のことです。JSONには構造的な意味を持つ少数の文字があります。二重引用符は文字列を区切り、バックスラッシュはエスケープシーケンスを開始します。さらに、文字列内にそのまま現れることが許されない制御文字(改行、タブ)もあります。エスケープは、これらをそれぞれ安全な2文字のシーケンス(\"、\\、\n、\t)や \uXXXX のUnicodeエスケープに置き換えるので、結果の文字列はどこでもきれいにパースされます。
JSONエスケープは思っている以上に頻繁に必要になります。最も一般的なケースはJSON-in-JSONです。Webhookのエンベロープ、メッセージキューのペイロード、監査ログが、リクエストボディを文字列フィールドとして保存します。つまり、内側のJSONを代入する前にエスケープしなければなりません。もう1つは、JSON設定の手書きです。複数行のシェルスクリプト・SQLクエリ・コードスニペットを1つのJSON値に貼り付けるには、すべての改行を \n に変換する必要があります。3つ目は、curl のようなツールで手作業でRESTリクエストボディを組み立てる場合で、引用符付きのJSON文字列はシェルとHTTP層を生き延びるためにエスケープしなければなりません。
このツールには、素朴なエスケープツールに対して3つの差別化点があります。第一に、正確なJSON仕様の規則(準拠したシリアライザーが使うのと同じロジック)に基づいているため、出力は無損失でラウンドトリップします。ここでエスケープし、どこでパースしても、バイトがそのまま戻ります。第二に、任意のASCIIセーフモードが、すべての非ASCII文字(追加面の絵文字もサロゲートペアとして処理)を \uXXXX に変換します。UTF-8を信用できないシステム向けです。第三に、すべてが100%ブラウザ内で実行されます。個人情報・トークン・機密情報をよく含むペイロードが、サーバーに触れることはありません。処理を逆にするには、当社のJSONアンエスケープツールを、先にJSONを検証するにはJSONフォーマッターをご覧ください。
// Input text
She said "hi"
then left.
// Escaped (Wrap on) — identical to JSON.stringify(input)
"She said \"hi\"\nthen left."
// Escaped (Wrap off) — just the body, for hand-built JSON
She said \"hi\"\nthen left.
// JSON-in-JSON
{"a":1} -> "{\"a\":1}" -> {"payload": "{\"a\":1}"} 主な機能
仕様に忠実なエスケープ
JSON仕様の正確な規則に基づいて構築。引用符・バックスラッシュ・改行・タブ・復帰・制御文字が、準拠したシリアライザーと同一にエスケープされます。出力はあらゆるJSONパーサーを無損失でラウンドトリップします。
引用符付き・なしの出力
「二重引用符で囲む」オンで完全なJSON文字列リテラル(JSON.stringify と同じ)が、オフでエスケープ済み本文だけが得られます。後者は、手書きのJSONドキュメントで囲み引用符を自分で入力するときに便利です。
ASCIIセーフ \uXXXX モード
任意で、U+007F を超えるすべての文字をUnicodeエスケープに変換でき、絵文字のような追加面の文字も正しいサロゲートペアとして処理されます。出力は純粋なASCIIで、UTF-8を正しく扱えないレガシーパイプラインでも安全です。
HTMLセーフなスラッシュエスケープ
「スラッシュをエスケープ」は / を \/ にして </script> シーケンスを無害化するので、HTMLの <script> タグ内にJSONをインライン化してもタグが早く閉じません。その他の場所ではきれいな出力のためデフォルトでオフです。
ラウンドトリップ検証のためのスワップ
1つの「方向を切り替え」ボタンでその場でアンエスケープモードに反転し、出力を入力として戻すので、出荷前にエスケープ → アンエスケープが元のテキストをバイト単位で返すことを確認できます。
100%ブラウザ内処理のプライバシー
すべてのエスケープがクライアントサイドで実行されます。ペイロード(個人情報・トークン・機密情報)がブラウザを離れることはありません。ネットワークタブで確認できます。貼り付け時のリクエストはゼロです。オンラインツールで機密データをエスケープする唯一の安全な方法です。
例
JSONの中にJSONを埋め込む(JSON-in-JSON)
{"event":"signup","user":{"id":42,"name":"Alice"}} このオブジェクトをエスケープして、別のJSONドキュメント内の文字列値として格納できるようにします(例:Webhookのペイロードフィールドや Kafka メッセージのエンベロープ)。「引用符で囲む」をオンにすると、コロンの直後にそのまま貼り付けられる出力になります。
複数行のコードスニペットを設定フィールドへ
function greet(name) {
return `Hello, ${name}!`;
} 複数行のJS関数を1行のJSON文字列に変換します。改行は \n になり、バッククォートのテンプレートはそのまま保持されるので、ファイルを壊さずにJSON設定値に貼り付けられます。
引用符とタブを含むテキスト
She said "hello" then left.
二重引用符は \" に、タブは \t にエスケープされるため、この文字列はあらゆるJSONパーサー・ログ行・RESTリクエストボディに安全に挿入できます。
レガシーシステム向けのASCIIセーフ出力
Price: 9.99€ — café société
「非ASCIIをエスケープ」を切り替えると、€ やアクセント付き文字が \uXXXX に変換されます。結果は純粋なASCIIとなり、転送中にUTF-8を壊してしまうシステムでも安全です。
使い方
- 1
テキストまたはJSONを貼り付ける
入力欄に何でも入力または貼り付けます。JSONオブジェクト、コードスニペット、ログ行、普通のテキストなど。エスケープ済みの結果が即座に表示されます。「例を読み込む」をクリックすると、JSON-in-JSONペイロードや複数行関数などのサンプルを試せます。
- 2
エスケープオプションを選ぶ
完全なJSON文字列リテラル(JSON.stringify と同じ)が欲しいときは「二重引用符で囲む」をオンに、エスケープ済み本文だけが欲しいときはオフにします。純粋なASCIIの \uXXXX 出力には「非ASCIIをエスケープ」を、HTMLの <script> タグ内にJSONをインライン化するときは「スラッシュをエスケープ」を切り替えます。
- 3
エスケープ済み文字列をコピーする
「コピー」をクリックすると結果が取得でき、JSONドキュメント・RESTリクエストボディ・設定ファイルにそのまま貼り付けられます。「方向を切り替え」をクリックするとアンエスケープモードに反転し、無損失のラウンドトリップを検証できます。
よくあるエスケープの落とし穴
二重エスケープ(すでにエスケープ済みのテキストをエスケープする)
エスケープを2回実行すると \n は \\n に、\" は \\\" になり、消費側は改行ではなくリテラルのバックスラッシュ-n を見ることになります。これは通常、テキストが上流ですでにJSONエスケープされていた場合に起こります。まずアンエスケープ(方向を切り替え)して確認し、それから正確に1回だけエスケープします。
Input already escaped: line1\nline2 Escaped again -> line1\\nline2 (literal backslash-n)
Raw input: line1 line2 Escaped once -> line1\nline2 (real newline encoded)
囲み引用符を忘れる
「Wrap」オフでは、エスケープ済み本文だけが得られ、完全なJSON文字列ではありません。それを値が期待される場所に直接貼り付けると、引用符が欠けているため無効なJSONになります。「Wrap」をオンに保つか、引用符を自分で入力するようにしてください。
{"msg": hello \"world\"}
// Missing quotes around the value -> invalid JSON {"msg": "hello \"world\""}
// Wrap on supplies the quotes -> valid JSON 不必要に非ASCIIを過剰エスケープする
消費側がUTF-8を問題なく扱えるのに「非ASCIIをエスケープ」をオンにすると、出力が肥大化して可読性が落ちるだけです。理由もなく café が caf\u00e9 になります。特定のレガシーシステムが純粋なASCIIを要求しない限り、このオプションはオフにしておきます。
café -> caf\u00e9 (no downstream need; just noise)
café -> café (valid JSON, readable, smaller)
よくある使用例
- JSON-in-JSONのWebhookペイロード
- リクエストボディをエスケープして、Webhookエンベロープ・Kafkaメッセージ・監査ログ内の文字列フィールドとして保存できるようにします。「Wrap」をオンにしておけば、外側のドキュメントのキーにそのまま代入できる出力になります。
- 設定内の複数行スニペット
- 複数行のシェルスクリプト・SQLクエリ・コードスニペットを1つのJSON文字列値に変換します。すべての改行が \n になるので、JSON設定ファイルは1行でも有効なまま保たれます。
- 手書きのRESTリクエストボディ
- JSON文字列をエスケープしてから curl --data 引数やHTTPクライアントに渡すので、引用符や改行がシェルと通信路を生き延び、リクエストが壊れません。
- ログセーフな文字列エンコード
- ユーザー提供のコンテンツを構造化ログ行に書き込む前にエスケープし、注入された引用符や改行がログ形式や下流のJSONログパーサーを破損させるのを防ぎます。
- ASCII限定のレガシー連携
- SOAPゲートウェイ・メールヘッダー・転送中にUTF-8を壊す古いシステム向けに純粋なASCIIの \uXXXX 出力を生成しつつ、あらゆる現代のJSONパーサーで完全にデコード可能なまま保ちます。
- HTMLへのJSONインライン化
- スラッシュをエスケープして、サーバーレンダリングページの <script> タグ内にJSONブロブを直接埋め込めるようにします。データ内の </script> がタグを早く閉じることはありません。
技術的な詳細
- エスケープアルゴリズム
- このツールは、JSON仕様の文字列規則で入力をシリアライズします。U+0022 (") → \"、U+005C (\) → \\、U+0008 → \b、U+000C → \f、U+000A → \n、U+000D → \r、U+0009 → \t、そしてその他の U+0020 未満の文字 → \u00XX です。「Wrap」オンで囲みの二重引用符が含まれ、オフで取り除かれます。これは準拠したシリアライザーの出力と正確に一致し、無損失のラウンドトリップを保証します。
- Unicodeとサロゲートペア
- デフォルトでは、U+007F を超える文字はリテラルなUTF-8として出力され、これはJSONが許可します。「非ASCIIをエスケープ」オンにすると、そのような各文字がUTF-16コード単位を使って \uXXXX に変換されます。基本多言語面の外の文字(絵文字、希少な文字体系)は2つの \uXXXX エスケープのサロゲートペアとしてエンコードされます。たとえば 😀 (U+1F600) は \ud83d\ude00 になり、これはJSONシリアライザーが生成するのと同じ表現です。
- スラッシュとHTMLコンテキスト
- JSONは / のエスケープを要求しないため、デフォルトでは保持されます。「スラッシュをエスケープ」が有効なとき、すべての / が \/ になります。これを行う唯一の実用的な理由はHTML埋め込みです。<script> タグ内では、リテラルの部分文字列 </script> がJSONコンテキストに関係なくタグを閉じてしまうため、スラッシュを <\/script> にエスケープすると、インライン化されたJSONを保ちつつ仕様にも準拠したままになります。
ベストプラクティス
- 完全なリテラルには Wrap をオンに保つ
- コードで代入する値や、JSONでコロンの後に貼り付ける値が必要なときは「二重引用符で囲む」をオンに保ちます。出力は JSON.stringify と同一の、完全でパース可能なJSON文字列です。囲み引用符を自分で手入力する場合のみオフにします。
- 必要でない限りUnicodeエスケープはオフに
- 生のUTF-8は有効なJSONであり、はるかに読みやすいです。「非ASCIIをエスケープ」は、UTF-8を正しく扱えない特定の下流システム(レガシーSOAP、一部のログパイプライン、ASCII限定のソースファイル)のためだけに有効にします。デフォルトですべてをエスケープすると、出力が騒がしくなるだけです。
- スラッシュはHTML埋め込みのときだけエスケープ
- スラッシュエスケープが意味を持つのはちょうど1か所、HTMLの <script> タグにインライン化されたJSONです。その文脈の外では利点なしに雑然とするだけなので、RESTボディ・設定ファイル・メッセージペイロードではオフにしておきます。
- スワップでラウンドトリップを検証する
- エスケープ済みデータをパイプラインに出荷する前に、「方向を切り替え」をクリックしてアンエスケープし、元のテキストが戻ることを確認します。これにより、意図せぬ二重エスケープ(\n のつもりが \\n になる頻出の原因)を検出できます。逆変換はいつでも当社のJSONアンエスケープツールで行えます。
よくある質問
このJSONエスケープツールは何をしますか?
JSONエスケープとJSON stringifyの違いは何ですか?
私のデータはどこかにアップロードされますか?
\uXXXX(非ASCIIエスケープ)オプションはいつ必要ですか?
別のJSON文字列の中にJSONオブジェクトを埋め込む(JSON-in-JSON)にはどうすればよいですか?
スラッシュをエスケープ(\/)オプションは何をしますか?
改行・タブ・制御文字は正しく処理されますか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
Base64 画像変換ツール
エンコーディングとフォーマット
Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。
CSV to JSON 変換ツール
エンコーディングとフォーマット
CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。
HTML Markdown 変換ツール
エンコーディングとフォーマット
HTML をブラウザ内できれいな Markdown に変換 — GFM のテーブル、タスクリスト、リンク対応。ATX/Setext 見出しとインラインまたは参照リンクを選択。Web コンテンツの移行や LLM への投入に最適。完全プライベートでアップロード不要。
画像 Base64 変換ツール
エンコーディングとフォーマット
画像を Base64 データURIに変換 — PNG・JPG・GIF・WebP・SVG・ICO 対応。HTML・CSS・Markdown・JSON 形式で出力&コピー。完全プライベートでアップロード不要。
JSON Diff(差分)
エンコーディングとフォーマット
2つのJSONファイルをブラウザで即座に比較・差分確認。サイドバイサイドのハイライト表示、RFC 6902 JSON Patch出力、タイムスタンプやIDなどのノイズフィールドを無視。100%プライベート、アップロード不要。