JSON を文字列リテラルとしてエスケープ(二重エンコードされた JSON のデコード)
JSON を stringify すると、内側の引用符と特殊文字がエスケープされ、二重引用符で囲まれた JSON 文字列リテラルになり、安全に他の場所へ埋め込めます。
「リテラルにスタリンガファイする」とは
JSON 文字列を JSON.stringify に通すと、ダブルクォートで囲まれ、内部のクォートとバックスラッシュがエスケープされた、1 つの安全な文字列値が得られます。
なぜ必要か
JSON を別の JSON フィールドに埋め込んだり、文字列型の DB カラムに格納したり、環境変数や URL パラメータとして渡すには、エスケープ済みの文字列リテラルが必要です。
エスケープのルール
ダブルクォートはバックスラッシュでエスケープ、バックスラッシュは 2 倍に、改行やタブのような制御文字は 2 文字のエスケープシーケンスになります。結果には生の改行は含まれません。
二重エンコードされた JSON のデコード
エスケープされたクォートで始まり、エスケープされたクォート列を含む文字列を受け取ったら、それは stringify されたものです。1 度パースして内部の JSON 文字列を取り出し、もう 1 度パースして実際の値を得ます。
二重エンコードが現れる場所
コンテキストオブジェクトをシリアライズするロギングフレームワーク、JSON 本文を 'body' フィールドに入れる webhook、JSON-as-string のエンベロープを送るメッセージキュー、text や varchar 型の DB カラムが代表的な源です。先頭のクォートと偶数個のバックスラッシュが手掛かりです。
ログ中の埋め込み JSON を扱う
構造化ロガーはオブジェクトをスタリンガファイして 1 行 1 値に保つことがよくあります。確認するときはログビューアからその行を取り出し、JSON.parse でエスケープを解いてから整形してください。複数行の JSON を grep するのは避け、1 行に整形された JSON のほうがずっと検索しやすいです。
ラウンドトリップ用のツール
ブラウザコンソール:JSON.parse(line) で内部 JSON を取り、JSON.stringify(...,null,2) で整形。Node CLI:'node -e "console.log(JSON.parse(process.argv[1]))" "<line>"' で両方を 1 回で。本サイトの JSON Stringify ツールは任意の深さのネストをワンクリックで扱えます。
JSON 修復ガイド
トピックハブ
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
個別ガイド
- Base64 文字列のデコード方法(および JWT ペイロード)
- URL エンコーディング:クエリパラメータとパスをパーセントエンコードする
- YAML を JSON に変換(インデントエラーを避ける)
- JSON を CSV に変換:オブジェクト配列をフラット化
- JSON を XML に変換:ルート要素・属性・配列
- JSON の末尾カンマを修正
- JSON のシングルクォートを修正
- JSON の引用符なしキーを修正
- LLM が出力した JSON を修復する
- JSON 解析エラー「Expected Property Name」を修正
- JSON と JavaScript オブジェクトリテラルの違い
- API リクエスト前に JSON を検証する
- JSON フォーマッタ vs JSON Repair
- JSON の Unexpected Token エラーを修正
- JSON から JavaScript オブジェクトへの変換ツール