JSON フォーマッター
JSON を整形または圧縮し、不正な入力がどこで壊れているかを正確に確認できます。
ここに結果が表示されます
この JSON フォーマッターの役割
JSON (JavaScript Object Notation) は、プログラム間で構造化データをやり取りする最も一般的な形式です — API 応答、設定ファイル、ログ行などです。コンパクトに設計されており、それゆえオブジェクトが数階層ネストしたり 1 行で届いたりすると読みにくくなります。このツールは貼り付けた JSON を 2 通りに書き直します: 一貫したインデントで構造がひと目で分かる整形版か、任意の空白をすべて取り除いて回線上でできるだけ小さくした圧縮版です。
整形と同時に検証も行います。再直列化する前にテキストを解析するため、不正な JSON が誤解を招く出力を生むことはありません — 代わりに解析が失敗した正確な行と列が示されるので、問題箇所へ直接飛べます。
整形と圧縮 — それぞれの使いどころ
二つのモードは正反対の目的を持ち、多くの作業では段階に応じて両方を使います:
- 読んだりデバッグしたりするときは整形 — API 応答を調べる、2 つのペイロードを比べる、プルリクエストで設定ファイルを確認する、といった場面です。インデントが文字の壁を、たどれるツリーに変えます。
- 送り出すときは圧縮 — JSON を HTML に埋め込む、Cookie やキャッシュに保存する、1 バイトを惜しむリクエスト本文に載せる、といった場面です。圧縮された JSON は、空白を除いただけのバイト単位で等価なデータです。
インデントの選択 (スペース 2 個、4 個、タブ) は整形出力にのみ影響します。スペース 2 個は JavaScript と Web ツールで最も一般的な慣習で、スペース 4 個やタブはそれを好むチームに向いています。どれを選んでも結果は有効な JSON のままです — インデントは純粋に見た目だけのものです。
検証エラーの読み方
JSON が不正なとき、このツールは曖昧な「無効」というメッセージではなく、最初の問題の行と列を報告します。エンジンのエラーメッセージはブラウザによって異なり、位置を省くことも多いため、位置は独立して計算され、調べ始めるのに妥当な箇所を指します。最初のエラーを直して再確認してください — 1 つのはぐれ文字が、いくつもの見かけ上の問題に波及することがよくあります。
よくある JSON の誤り
JSON は、似ている JavaScript のオブジェクトリテラルよりも厳格です。人がつまずきやすいのは次の誤りです:
- 末尾のカンマ: オブジェクトや配列の最後の項目の後ろのカンマは、JavaScript では有効ですが JSON では無効です。
- 単一引用符: JSON の文字列とキーは二重引用符を使わなければなりません。'value' は無効で、"value" が正しい形です。
- 引用符のないキー: すべてのオブジェクトのキーは引用符付きの文字列でなければならないので、{ name: "x" } は { "name": "x" } にする必要があります。
- コメント: JSON にはコメント構文がありません。// や /* */ は解析エラーになります。
- 特別な数値: NaN、Infinity、-Infinity は有効な JSON の数値ではありません。
- 誤った引用符: ワープロから貼り付けた「スマートクォート」は引用符に見えますが別の文字であり、解析できません。
よくある質問
- 私の JSON はサーバーに送られますか?
- いいえ。解析・検証・整形はすべて JavaScript を使ってブラウザ内で行われます。貼り付けた内容がアップロード・保存・記録されることはないため、機密のペイロードにも安全に使えます。
- 整形するとデータが変わりますか?
- いいえ。整形と圧縮はトークン間の空白を足し引きするだけです。キー・値・数値・構造は同じで、変わるのは配置だけです。
- 数値が並べ替えられたり書き換えられたりするのはなぜですか?
- このツールは JSON を実際の値に解析して直列化し直すため、数値は正規形に整えられます (例えば 1e3 は 1000 になります)。値は変わらず、その文字表現が標準になるだけです。
- とても大きな JSON ファイルも扱えますか?
- 大きなペイロードも扱えますが、すべてがブラウザ内で動くため、極端に大きなファイル (数十メガバイト) は端末によっては遅くなったり、メモリの上限に達したりすることがあります。
- オブジェクトのキーの順序は保たれますか?
- はい。キーの順序は入力に現れたとおり正確に保たれます — このツールはキーを並べ替えません。
- JSON と JavaScript のオブジェクトの違いは何ですか?
- JSON はデータ交換のためのテキスト形式で、JavaScript のオブジェクトはメモリ上の値です。JSON はより厳格で、二重引用符付きのキーと文字列を要求し、末尾のカンマとコメントを禁じ、決まった種類の値 (文字列・数値・真偽値・null・配列・オブジェクト) しか許しません。
- JSON5 や JSONC (コメント付き JSON) を整形できますか?
- いいえ。このツールは厳格な標準 JSON を検証します。JSON5 や JSONC はコメントなどの便利機能を加えたもので、JSON 仕様の一部ではないため、エラーとして報告されます。