JSONエスケープ / アンエスケープ
JSON文字列のエスケープとアンエスケープ - 特殊文字をエスケープシーケンスに変換
入力
出力
JSONエスケープとは?
JSONオブジェクトをデータベースの列に保存しようとしたり、APIから\"や\\だらけの文字列を受け取ったりしたことはありませんか?それがJSONエスケープです。RFC 8259規格では、JSONパーサーが構文と混同しないように、文字列内の特定の文字(二重引用符、バックスラッシュ、改行、タブ、制御文字)をエスケープすることが必要です。このツールはその両方をサポートします。生のテキストを有効なJSON文字列にエスケープしたり、エスケープシーケンスを含む文字列を実際の文字に戻したりできます。
このツールにはエスケープとアンエスケープの2つのモードがあります。上部で切り替えられます。どちらもブラウザ内で動作し、サーバーには何も送信されません。
このツールの使い方
モードを選択
特殊文字をエスケープシーケンスに変換するにはエスケープ、元に戻すにはアンエスケープを選択します。
入力を貼り付け
テキストを左のエディターに貼り付けます。生の文字列、JSON文字列値、または完全なJSONドキュメントを貼り付けられます。必要に応じてサンプルまたはアップロードを使用してください。
結果をコピー
右のパネルは自動的に更新されます。コピーまたはダウンロードで結果を取得します。エスケープされたJSON文字列をオブジェクトにパースするには、文字列をJSONにを試してください。
JSONエスケープの例
エスケープは特殊文字をエスケープシーケンスに変換します。通信テーマの例:
生の入力(改行付き)
エスケープされた出力
エスケープが重要な場面
JSON文字列を別のJSON文字列に埋め込む場合、または文字列を期待するデータベースフィールドにJSONを保存する場合、エスケープにより内側の引用符やバックスラッシュが構造を壊さないようにします。プログラムでJSONを構築する場合、JSON.stringify()が自動的にエスケープを処理します。このツールは手動編集や、ログやAPIからの事前エスケープされた文字列を扱う場合に便利です。
二重エスケープされた文字列(例:JSONを文字列として返すAPI)を受け取り、実際のJSONを取得する必要がある場合、アンエスケープが便利です。文字列をJSONにツールはエスケープされた文字列を直接パースできます。
よくある質問
JSONでエスケープが必要な文字はどれですか?
RFC 8259規格では以下のエスケープが必要です:二重引用符" → \"、バックスラッシュ\ → \\、改行 → \n、タブ → \t、復帰 → \r、制御文字(U+0000–U+001F)→ \uXXXX。
JavaScriptでJSON文字列をアンエスケープするには?
JSON.parse()を使います。エスケープされた文字列が引用符で囲まれている場合は、JSON.parse('"' + escaped + '"')で実際の値に変換できます。完全なJSONオブジェクトの場合は、JSON.parse(jsonString)でアンエスケープとパースを同時に行えます。
JSONのアンエスケープが必要なのはいつですか?
二重にエスケープされたJSONを受け取ったとき — 例えば、別のJSON内でJSONを文字列として返すAPI、またはJSONをstringとして保存するデータベースフィールドなど。アンエスケープで外側の層を取り除き、実際のJSONで作業できるようにします。
JSON.stringify()は自動的に文字をエスケープしますか?
はい。JSON.stringify()は引用符、バックスラッシュ、改行、制御文字を自動的にエスケープします。このツールは、手動で文字列を編集するとき、不正なJSONをデバッグするとき、またはログやAPIからの事前エスケープされた文字列を扱うときに便利です。
データはサーバーに送信されますか?
いいえ。すべての処理はブラウザ内で行われます。データはデバイスから外に出ることはなく、機密情報を含むJSONでも安全に使用できます。
関連ツール
JSON文字列のエスケープ規則はRFC 8259にあります。MDNでJavaScriptのJSONを解説しています。JSON仕様でエスケープシーケンスが定義されています。パースについてはJSON.parse()とJSON.stringify()を参照してください。jqツールはコマンドラインでJSONを処理します。