JSONエスケープ/アンエスケープ
特殊文字を扱うためにJSON文字列をエスケープまたはアンエスケープします
入力
エスケープ済みJSON
JSONエスケープ/アンエスケープとは?
JSON文字列には特定の文字しか含められません。リテラルのダブルクォート、改行、バックスラッシュをそのまま入れようとした瞬間、エスケープが必要になります。さもないとパーサーが壊れてしまいます。JSONエスケープはその変換を両方向で行います。人間が読める生のテキストをJSONで安全なリテラルに変換することも、すでにエスケープされた文字列から元のテキストを復元することもできます。
エスケープシーケンス自体は RFC 8259 §7 で定義されています。引用符には \"、バックスラッシュには \\、改行には \n、タブには \t、任意のUnicodeコードポイントには \uXXXX、そのほかいくつかがあります。これらは JSON.stringify が出力するのと同じシーケンスで、このツールはJavaScriptコンソールなしでその変換を提供するだけです。JSON構文の包括的な入門は、公式JSON仕様 を参照してください。
JSONエスケープ/アンエスケープの使い方
- 方向を選ぶ – エスケープ/アンエスケープの切り替えをクリックして、生テキスト → JSONで安全な文字列への変換、またはその逆を切り替えます。
- 入力を貼り付ける – 左のエディターにテキストを入れます。1行でも、複数行のブロックでも、すでに一部エスケープ済みでも構いません。ツールが自動で判別します。
- 出力を読む – 右のエディターに変換結果が即座に表示されます。特殊文字がエスケープシーケンスに置き換えられます(またはその逆)。
- 結果をコピーする – コピーボタンで変換後の文字列をクリップボードに入れ、JSONファイル、APIリクエストのボディ、データベースの列にそのまま貼り付けられます。
- サンプルを読み込む – 「サンプル」をクリックすると、最も一般的なエスケープシーケンスを含む実例が読み込まれ、変換のしくみを一目で確認できます。
プロのヒント: JSONオブジェクトを別のJSON文字列の中に埋め込む必要がある場合(例:JSON形式のログ行にペイロードを記録する場合)、内側のJSONをこのツールで一度だけエスケープすれば十分です。二重にエスケープする必要はありません。
例
引用符と改行を含むSMSテンプレート。左はロガーに送る生のテキスト、右はJSON文字列の中に収まるよう正しくエスケープしたものです。
Hi Ingrid, your "Unlimited 5G" plan renews on 2026-07-01. Reply STOP to opt out. Path: C:\Users\msg.txt
"Hi Ingrid,\nyour \"Unlimited 5G\" plan\nrenews on 2026-07-01.\nReply STOP to opt out.\nPath: C:\\Users\\msg.txt"よくあるユースケース
JSONの中にJSONを埋め込む
ロギングフレームワークは各ログエントリーが単一のJSONオブジェクトであることを期待することが多く、そのフィールドの1つが、厄介なことに別の場所から来たJSONペイロードだったりします。外側のオブジェクトが有効なまま保たれるよう、まず内側のJSONをエスケープしましょう。エスケープしないと、ペイロード内のすべての " が外側の文字列を閉じてしまい、行全体がパースに失敗します。
手作業でAPIリクエストボディを組み立てる
curl リクエストやテスト用フィクスチャを作っていて、ボディに自由形式のテキスト(SMSテンプレート、顧客メモ、HTMLスニペット)が含まれる場合、それをJSONボディに入れる前にエスケープしましょう。引用符、改行、バックスラッシュはすべて処理が必要です。MDNのJSONガイド に完全な一覧があります。
ログからエスケープ済み文字列を読む
逆方向も同じくらい一般的です。集中ログシステムからエントリーを取り出したら、ペイロードが二重エンコードされていて \" や \n だらけ、ということがあります。一度アンエスケープして人間が読める元の形に戻し、構造を調べたいなら JSONフォーマッター にかけましょう。
主な機能
- 双方向 – 1つの切り替えでエスケープとアンエスケープができ、別ツールは不要です。
- RFC 8259準拠 –
\uXXXXのUnicodeリテラルを含め、JSON仕様で定義されたすべてのエスケープシーケンスを処理します。 - 複数行サポート – 改行やタブを含むテキストブロックを貼り付けても、入力が分割されることなく正しく変換されます。
- プレーンテキストには冪等 – すでにクリーンな文字列にエスケープを実行しても何も変わりません。入力に必要かどうか分からなくても安全に使えます。
- ブラウザ内のみで処理 – 何もアップロードされません。文字列はあなたのデバイスから出ません。
よくある質問
JSONで実際にエスケープが必要な文字はどれですか?
6つの文字が必要です。ダブルクォート、バックスラッシュ、そして4つの制御文字 — バックスペース、フォームフィード、改行、キャリッジリターン、タブ(厳密には5つ)です。さらに、U+0020未満のコードポイントはすべて \u 表記でエスケープしなければなりません。それ以外はUnicodeの文字や絵文字も含め、リテラルのまま使えます。正式な一覧は RFC 8259 §7 にあります。
エスケープとJSON.stringifyの違いは何ですか?
JSON.stringify はJavaScriptの値全体(オブジェクト、配列、数値、文字列)をJSONドキュメントにシリアライズします。文字列を引用符で囲み、エスケープを適用します。このツールは生の文字列に対してエスケープのステップだけを行い、周囲に引用符はつけません。オブジェクトを持っているときはstringifyを、JSONドキュメントの中に入れる文字列を持っているときはこのツールを使ってください。
絵文字やアクセント付き文字のような非ASCII文字をエスケープできますか?
はい。デフォルトでJSONは文字列内のあらゆるUTF-8文字を許可するので、絵文字やアクセント付き文字はそのまま通過します。ASCIIで安全な出力が必要な場合(古いシステムとの互換性のため)は、\u エスケープを有効にしてください。すべての非ASCIIコードポイントが \uXXXX になります。UnicodeとJSONの背景については、MDNのstringifyリファレンス を参照してください。
エスケープした文字列がまだパースできません。何が間違っていますか?
たいていは3つのうちのどれかです。対応しない引用符(開きはエスケープしたが閉じはしていない)、エスケープされずに残った改行、または有効なエスケープではない文字の前のバックスラッシュ(例:\x)。疑わしい文字列を JSONバリデーター にかけると、パースがどこで失敗するか正確に分かります。Stack OverflowのJSONタグ には、より厄介なケースの解決済み事例が何千件もあります。
データは安全ですか?
はい。エスケープとアンエスケープの変換は完全にブラウザ内で行われます。ネットワークに何も送信されず、何もキャッシュされず、何も記録されません。
関連ツール
- JSON Formatter – アンエスケープした結果を整形して読みやすくします。
- JSON Validator – エスケープした出力が有効なJSONか確認します。
- JSON Minifier – 最もコンパクトなリテラルが必要なら、エスケープ前に空白を取り除きます。
- JSON to Table – アンエスケープしたJSONをテーブルで表示し、素早く確認します。
役立つリソース
- RFC 8259 §7 — Strings – すべてのJSONエスケープシーケンスの正式な一覧。
- JSON.org – 文字列文法のレイルロード図を備えたオリジナルのJSON仕様。
- MDN — JSON.stringify – JavaScript組み込みのシリアライザーがエスケープをどう扱うか、例付きで解説。
- W3Schools JSON Syntax – JSON構文ルールの初心者向けウォークスルー。
- Stack Overflow JSON Tag – 厄介なエスケープやパースの問題の解決済み事例。