使い方
- 上の欄にJSON文字列を貼り付けます(入力と同時に検証・整形します)。
- 「出力形式」で整形(インデント付き)か圧縮(1行)かを選び、整形時は「インデント」で2/4スペース・タブを選びます。
- 必要に応じて「キーをソート」「エスケープ解除」にチェックを入れます。
- 「結果をコピー」でクリップボードにコピーできます。
仕組み・根拠
検証にはブラウザ標準の JSON.parse、整形・圧縮には JSON.stringify の第3引数(スペース数または文字列)を使っています。どちらもECMAScript仕様(ECMA-262)が定めるJSON組み込みオブジェクトの実装で、構文はJSONの仕様であるRFC 8259(およびECMA-404)に厳密に従います。構文エラー時はエラーメッセージ中の位置情報(position N)を入力文字列に対して自分で行番号・列番号に変換し直しているため、ブラウザやOSが変わっても同じ形式で原因箇所を表示できます。「キーをソート」は全階層を再帰的に辿ってキーを文字コード順に並べ替えてから出力します。
現場の落とし穴: JSONはJSのオブジェクトリテラルより厳格です。末尾カンマ、キーのクォート省略、シングルクォート、コメントはRFC 8259では無効で、JSON.parseは例外を投げます。「JSのコードとしては正しいのにエラーになる」場合は、まずこれらを疑ってください。またJSONの数値はJavaScriptのdouble(IEEE754)として解釈されるため、SnowflakeIDのような2^53超の整数は精度が落ちることがあります。IDは文字列型で扱うAPI設計が安全です。
よくある質問
Q. 「エスケープ解除」は何のためのオプションですか?
A. 通常、JSON.parse→JSON.stringifyの変換だけで\uXXXXは元の文字に戻ります。このオプションは、文字列の値の中にさらにJSON文字列が埋め込まれている「二重エンコード」のケースなど、\uXXXXが文字として残ってしまう場合に、表示だけ読みやすくするためのものです。
Q. 重複したキーがあるとどうなりますか?
A. JSON.parseは後に出てきた値で上書きします(先勝ちではなく後勝ち)。入力側で重複キーを解消しておくことをおすすめします。
Q. どれくらいの大きさまで処理できますか?
A. 目安として1MB程度までは問題なく処理できます。ブラウザ内蔵のJSON.parseをそのまま使っているため、数MB程度でも動作しますが、極端に大きい場合はタブの応答が一時的に遅くなることがあります。
関連ツール
最終更新・根拠の確認日: 2026-09-10 · カテゴリ: 開発・データ