JSON 用に文字列をエスケープする方法
- モードを選びます:エスケープ、アンエスケープ、JSON を文字列化、文字列化 JSON を解析。
- テキストを入力または貼り付けると、すぐに結果が表示されます。エスケープ時には、前後に引用符を付けるかどうか、非 ASCII 文字を
\uXXXXで書くかどうかを選べます。 - 結果をコピーするか、入れ替えを押して逆の操作を行い、往復変換で元に戻るかを確認します。
JSON のエスケープシーケンス一覧
| 文字 | エスケープ後 |
|---|---|
ダブルクォート " | \" |
バックスラッシュ \ | \\ |
| 改行(ラインフィード) | \n |
| 復帰(キャリッジリターン) | \r |
| タブ | \t |
| バックスペース、改ページ | \b、\f |
| その他の制御文字 U+0000~U+001F | \u0000 … \u001f |
| 任意の文字(オプション) | \uXXXX(例:é → \u00e9、😀 → \ud83d\ude00) |
スラッシュ /(オプション) | \/ |
JSON の文字列は常にダブルクォートで囲むため、シングルクォートをエスケープする必要はありません。
文字列化された JSON(Stringified JSON)
文字列化された JSON とは、JSON 文字列の中に格納された JSON ドキュメントのことです。たとえば "payload": "{\"id\":7}" のような API のフィールドや、データベースの列、環境変数、ログの行に保存された JSON がこれにあたります。JSON を文字列化はドキュメントからこのような文字列を作成し、文字列化 JSON を解析は 2 重に文字列化されている場合でも元に戻して、結果を整形します。
- JavaScript:
JSON.stringify(text)でエスケープ、JSON.parse(literal)でアンエスケープ。 - Python:
json.dumps(text)とjson.loads(literal)。 - PHP:
json_encode($text)とjson_decode($literal)。
よくある質問
JSON でエスケープが必要な文字は?
必要なのはダブルクォート、バックスラッシュ、改行やタブなどの制御文字(U+0000~U+001F)だけです。é や中、日本語、絵文字などそれ以外の文字は、UTF-8 の JSON ならそのまま記述できます。
日本語が \u3042 のように表示されるのはなぜですか?
一部のプログラムは、ASCII 以外の文字をすべて \uXXXX 形式のエスケープで出力します(\u3042 は「あ」)。どちらの形式も意味は同じで、「アンエスケープ」を使うと読みやすいテキストに戻せます。
エスケープと文字列化の違いは何ですか?
エスケープは、任意のテキストを JSON の文字列リテラルに変換します。文字列化は、まず入力が有効な JSON かどうかを確認して圧縮し、そのうえでエスケープします。つまり結果は、JSON ドキュメントを含む文字列になります。
外側の引用符がない文字列もアンエスケープできますか?
はい。前後の引用符があってもなくても貼り付けられます。エスケープされていない引用符や実際の改行が混ざっていても処理できます。