JSON Diff
2つのJSONオブジェクトを比較し、差分を瞬時に見つけます
JSON 1
JSON 2
差分
JSON Diffとは?
2つのAPIレスポンスはほとんど同じに見えるのに、何かが変わって本番環境を壊した。あるいは、昨日は動いたのに今日は動かない設定ファイルを前に固まっている。JSON Diffは、目視ではつらいほど時間のかかる作業を行います。両方のオブジェクトをキーごとにたどり、何が追加され、何が削除され、何が変更されたかを行単位で正確に示します。
比較は(単なるテキストではなく)構造的なものなので、キーの順序や空白に惑わされません。同じデータを再整形しただけのファイルは差分ゼロと表示されます。名前を変えたフィールドは、削除1件と追加1件として現れます。これはRFC 6902がJSON Patch(JSONの変更を記述する公式仕様)で取るのと同じアプローチです。基盤となる形式そのものをおさらいするなら、JSON公式仕様やRFC 8259がどちらも良いリファレンスです。そして、入力が厳密にはJSONでない場合――ログの断片、部分的にエンコードされたペイロード、テキストが混在したもの――には、汎用のテキスト比較ツールがワークフローのその部分をカバーします。
JSON Diffの使い方
- 元のJSONを貼り付ける – 「変更前」のバージョンを左パネルに入れます。これが比較の基準になるベースラインです。
- 更新後のJSONを貼り付ける – 「変更後」のバージョンを右パネルに入れます。順序が重要です。差分は元のJSONを基準に報告されます。
- 差分出力を確認する – 下部パネルがすべての変更をハイライトします。削除された行は赤、追加された行は緑でマークされ、変更された値は古い値と新しい値を並べて表示します。
- サンプルデータを使う – 左パネルの「Sample」をクリックすると小さな実例が読み込まれ、自分のデータを貼り付ける前にツールの動作を確認できます。
- 見た目のノイズを無視する – 比較は構造的なので、どちらの側も再整形する必要はありません。同じデータの圧縮済みJSONと整形済みJSONは同一として比較されます。
ヒント: 値ではなくどのキーが変わったかだけを知りたい場合は、差分のセクション見出しに注目してください――変更された各リーフへのJSONパスが示されています。
例
同じ加入者プロファイルの2つのバージョンです――プランが変わり、ローミングが有効になり、信号強度が下がりました。差分は動いた部分だけをハイライトします。
{
"msisdn": "447700900142",
"plan": "Pay As You Go",
"roaming": false,
"rsrp": -88,
"updatedAt": "2026-05-12"
}{
"msisdn": "447700900142",
"plan": "Unlimited 5G",
"roaming": true,
"rsrp": -104,
"updatedAt": "2026-06-24"
}よくある利用シーン
APIバージョンのリグレッションテスト
APIをv1からv2に上げたあと、レスポンスの形に重要な変更がないことを確認したい。昨日のレスポンスを左に、今日のものを右に貼り付ければ、変わったもの(名前を変えたフィールド、新しい任意プロパティ、削除されたenum値)がすぐに現れます。これは実行できる中で最も安価な契約テストの一手です。
設定ドリフトの検出
2つの環境――ステージングと本番――は同じ設定を共有しているはずなのに、何かの挙動が違う。両方の設定をエクスポートしてここで比較すれば、問題のキーが浮かび上がります。JSONバリデーターのチェックと組み合わせれば、「自分のマシンでは動く」系の問題の大半を、インシデントレビューに至る前に捕まえられます。
監査とコンプライアンスの証跡
多くのコンプライアンスフレームワークは、機微なレコードが変更されたときに変更前後の状態を示すことを求めます。差分を使って、2つのスナップショット間でどのフィールドが動いたかの人間が読める要約を作りましょう――変更依頼や監査ログに添付する証拠として役立ちます。正式な変更記述形式については、JSON Patch RFCをブックマークしておく価値があります。
主な機能
- 構造的比較 – 見た目の違い(空白、キーの順序、字下げ)を無視し、実際のデータを比較します。
- 追加/削除/変更のハイライト – 色分けされた出力で、差分を数秒でざっと確認できます。
- ネスト構造に対応 – 深いオブジェクトや配列を再帰的にたどり、変更を完全なJSONパス付きで報告します。
- サーバー往復なし – 比較はすべてブラウザ内で行われ、どちらの側もアップロードされません。
- サンプルローダー – 事前に読み込まれた例で、実データを貼り付ける前に出力の形を確認できます。
よくある質問
オブジェクト内のキーの順序は差分に影響しますか?
いいえ。JSONオブジェクトは定義上、順序を持ちません(RFC 8259 §4参照)。ツールはキー名で比較するため、同じデータを異なる順序で持つ2つのオブジェクトは差分ゼロになります。
配列の順序はどうですか?
配列は順序を持つため、位置が重要です。["a", "b"]と["b", "a"]は異なるものとして現れます。順序に依存しない配列比較が必要な場合は、貼り付ける前に両方の配列をソートするか、コード内でjsondiffpatchのような構造的差分ライブラリを使ってください。
大きなJSONファイルを比較できますか?
はい。ツールは数メガバイトまでのファイルを快適に処理します。それを超えると、差分自体は依然として高速ですが、数千行の変更をブラウザで描画すると遅く感じることがあります――入力を本当に気になるオブジェクトのサブツリーに絞ってみてください。
データは安全ですか?
はい。比較はすべてブラウザ内のクライアントサイドで実行されます。どちらのJSONもサーバーに送信されず、キャッシュもログも残りません。プライバシーが重要な場合は、ネットワークから切断してもツールは動き続けます――試してみてください。
JSONに末尾のカンマやシングルクォートがあります――それでも比較できますか?
まず両方の側が有効なJSONである必要があります。どちらかの側で解析に失敗すると、差分は実行されません。各側をJSON Validatorに通して構文の問題を特定してから戻ってきてください。よくあるJSONの落とし穴の一覧については、MDNのJSONドキュメントがさっと読めます。
関連ツール
- JSON Formatter – 字下げを揃えたい場合は、比較前に両側をきれいに整形します。
- JSON Validator – 構文エラーが差分を壊す前に捕まえます。
- JSON to Table – どちらかのバージョンを並べ替え可能な表として表示し、行をすばやく確認します。
- JSON Minifier – 構造ではなく生のバイトサイズを比較したい場合は、空白を取り除きます。
役立つリソース
- RFC 8259 – 現行のIETF JSON仕様。オブジェクトの等価性と配列の順序規則を定義しています。
- RFC 6902 — JSON Patch – 2つのJSONドキュメント間の差分を表現する標準形式。
- JSON.org – 文法の鉄道図式付きの、オリジナルのJSON仕様。
- MDN JSON Guide – JavaScriptでJSONを解析・シリアライズするためのリファレンス。
- jsondiffpatch – 多くのWebベースのJSON差分ツールを支えるオープンソースのJSライブラリ。配列の移動検出にも対応。
- Stack Overflow JSON Tag – JSONの難しいエッジケースや言語別の解析に関するコミュニティのQ&A。