JSON整形・多重エスケープ復元
何重にもエスケープされたJSONを自動で復元し、読みやすく整形します。通常のJSONもそのまま整形できます。
入力例
結果
JSONを入力して「復元・整形」を押してください。
このツールでできること
JSONの整形・復元にまつわる主な機能です。
- JSON文字列を読みやすく整形できます(インデントは2スペース・4スペース・Tab・圧縮から選択できます)
- 何重にもエスケープされたJSON文字列(ログ等でよく見る形式)を自動で検出し、最大10層まで本来のJSON構造へ復元できます
- 復元時に何層のエスケープを解除したかを表示します
- 最終結果がオブジェクト・配列以外(文字列・数値・真偽値・null)になった場合は、その型も併せて表示します
- 構文エラーのあるJSONは自動修正せず、エラーとして明示します
- evalなどを使わず、標準のJSON.parseのみで解析する安全な設計です
手順を見る
- JSON文字列(通常のJSON、またはエスケープされたJSON文字列)をテキストエリアに貼り付けます
- 「復元・整形」ボタンを押します(処理はブラウザ内で完結し、入力はサーバーへ送信されません)
- 整形結果と、解除したエスケープの層数・最終的な値の型を確認し、必要に応じて結果をコピーします
こんなときに使えます
こんな場面でJSON整形・多重エスケープ復元が役立ちます。
利用シーンを見る
- ログに出力された二重・三重にエスケープされたJSONを読みやすい形で確認したいとき
- APIレスポンス内で文字列化されたJSON(JSON文字列の中にさらにJSON文字列が入っている状態)の中身を確認したいとき
- 手元のJSONをそのまま整形して見やすくしたいとき
- JSONの構文にエラーがないか確認したいとき
- 何層エスケープされているか分からないJSON文字列を、層数を意識せずまとめて復元したいとき
JSON整形・多重エスケープ復元の仕組み
このツールの動作の仕組みを説明します。
詳しい解説を見る
多重エスケープされたJSONとは
ログ出力やAPIレスポンスなどでは、本来のJSONオブジェクトがさらに文字列としてJSON化された状態で扱われることがあります。たとえば本来は{ "a": 1 }であるべきものが、"{\"a\":1}"のように、JSON全体がもう一段(あるいは何段も)文字列としてエスケープされた形になっている状態です。このような文字列をそのまま表示すると、バックスラッシュだらけで非常に読みにくくなります。
復元の仕組み(繰り返しparseする方式)
本ツールはまず入力全体に対してJSON.parseを1回行います。その結果が文字列で、かつその文字列自体がさらに有効なJSONとして解釈できる場合は、繰り返しJSON.parseを適用して本来の構造まで遡って復元します。evalやFunctionは一切使用せず、標準のJSON.parseのみで判定します。
解除できる層数の上限(最大10層)
無限ループや異常な入力を防ぐため、最初の解析とは別に、追加で最大10層までエスケープを解除します。10層に到達した時点でもなお解除可能な層が残っている場合はその旨を表示し、それ以降は処理を打ち切ります。通常の用途では10層に達することはまずありません。
構文エラーは自動修正しません
末尾カンマの付け忘れなど、構文にエラーがあるJSONを自動的に修正することはしません。構文エラーが見つかった場合はエラーとして表示するのみで、値を推測して補完することはありません。「壊れたJSONを直してくれるツール」ではなく、あくまで多重エスケープの復元と整形を行うツールです。
文字列が数値・真偽値・nullに変わることがあります(仕様どおりの挙動)
復元処理は「文字列として得られた値が、さらに有効なJSONとして解釈できるかどうか」だけを基準に繰り返します。そのため、元の値が"123"のような数値を表す文字列だった場合、復元結果は数値の123になります。これは不具合ではなく、仕様どおりの挙動です。最終的な値の型がオブジェクト・配列以外になった場合は、結果画面にその型が併記されます。
よくある質問
どこまで深いエスケープに対応していますか?
最初の解析とは別に、追加で最大10層までのエスケープ解除に対応しています。10層に到達してもまだ解除できる層が残っている場合は、その旨を表示したうえで処理を打ち切ります。通常の用途で10層に達することはまずありません。
構文エラーのあるJSON(末尾カンマなど)を自動修正できますか?
いいえ、自動修正はしません。構文エラーがある場合はエラーとして表示するのみで、値を推測して補完することはありません。
YAMLやJSON5などJSON以外の形式にも対応していますか?
いいえ、対応していません。標準のJSON(JSON.parseで解析できる形式)専用のツールです。
復元結果が文字列ではなく数値や真偽値になって表示されることがあります。これは不具合ですか?
不具合ではなく仕様どおりの挙動です。復元処理は、文字列として得られた値がさらに有効なJSONとして解釈できるかどうかだけを基準に繰り返すため、たとえば"123"のような数値を表す文字列は数値の123として復元されます。最終的な値の型がオブジェクト・配列以外の場合は、結果画面にその型が併記されます。
入力したJSONはサーバーに送信されますか?
いいえ。JSON文字列の解析・復元・整形はすべてブラウザ内で行われ、サーバーへの送信や保存は行いません。