JSON Diff
2つのJSONドキュメントを比較し、追加・削除・変更された箇所を構造的な差分として表示します。すべてブラウザー内で動作します。
2つのJSONドキュメントはブラウザー内でローカルに解析・比較され、アップロードされることはありません。ただし、本番環境の機密情報や認証情報をどのオンラインツールにも貼り付けないようにしてください。
結果を整形し直したいですか?JSON整形ツールをお試しください。
JSON Diff について
JSON Diffは2つのJSONドキュメントを比較し、行単位のテキスト差分ではなく構造的な差分を表示します。元のJSONを左に、変更後のJSONを右に貼り付けると、両方を解析し、どの値が追加・削除・変更されたか、あるいは型が変わったかを user.roles[2] のようなパス付きで正確に示します。比較はセマンティックなので、オブジェクトキーの並べ替えが差分として表示されることはなく、本当に意味のある変更だけが見えます。「配列の順序を無視」をオンにすると配列を集合として比較でき、「キーをソート」をオンにすると並べて表示する際に両側を正規化できます。APIレスポンス・設定ファイル・フィクスチャを差分比較する開発者のために作られています。すべてはブラウザー内でローカルに動作するため、貼り付けたJSONがアップロードされることはなく、お使いのデバイスに留まります。
機能
- キーの順序に依存しないセマンティックな差分 — オブジェクトキーの並べ替えは変更として扱いません
- 追加・削除・変更・型変更された値を、それぞれ user.roles[2] のようなパス付きで報告
- 本当の型変更(1 と "1"、null と値)を通常の値変更と区別
- 追加・削除・変更されたエントリ数をサマリーで一目で把握
- 「配列の順序を無視」オプションは配列を位置ではなく値の多重集合として比較
- 「キーをソート」で両方の整形済みドキュメントをきれいに並べて比較
- 整形した2つのJSONを構文ハイライト付きで並べて表示
- 差分全体をプレーンテキストのサマリーとしてコピー、または両方の入力をワンクリックでクリア
JSON Diff の使い方
- 元のJSONを左側の「Original」ボックスに貼り付けます。
- 更新後のJSONを右側の「Changed」ボックスに貼り付けます。
- 色付きの差分を読みます。緑は追加、赤は削除、橙は変更された値です。
- 順序を差分として数えない場合は「配列の順序を無視」または「キーをソート」を切り替えます。
- 並べて表示に切り替えて両方の整形済みドキュメントを比較するか、差分サマリーをコピーします。
例
入力
// Original
{ "name": "Ada", "roles": ["admin"], "active": 1 }
// Changed
{ "active": "1", "name": "Ada", "roles": ["admin", "editor"] }
出力
+ roles[1]: "editor"
~ active: 1 → "1" (type changed)
並べ替えられたキーは無視され、新しい配列要素が追加され、active が数値から文字列に変わっています。
よくあるエラーとトラブルシューティング
- 「Invalid JSON on the left side」など、左側または右側のエラーが表示される。 — 指摘されたドキュメントを修正してください。エラーにはどちら側がなぜ失敗したかが示されます。各入力は完全で有効なJSON値(オブジェクト・配列・文字列・数値・true/false・null)である必要があります。
- 配列の要素を並べ替えると、多数の変更エントリとして表示される。 — 「配列の順序を無視」をオンにすると、配列が値の集合として比較されます。オフのままだと配列は位置で比較され、並べ替えが変更として数えられます。
- 1 と "1" が同じに見えるのに別物として報告される。 — これは型変更です。左の値は数値、右の値は文字列です。JSON Diffは型変更を値変更と意図的に分けて表示するため、簡単に見つけられます。
- キーが同じで順序だけ異なる2つのオブジェクトが変更として報告される。 — 本来そうはなりません。差分はキーの順序に依存しません。これが起きる場合、どちらかの側に余分または不足したキーがあるか、値が異なっています。報告されたパスを確認してください。
よくある質問
- JSON Diffはオブジェクトキーの順序を無視しますか?
- はい。比較はセマンティックなので、同じキーと値を持つ2つのオブジェクトはキーの順序に関係なく等しいとみなされます。本当の追加・削除・値変更だけが、それぞれのパス付きで報告されます。
- JSON Diffは順序の異なる配列をどう扱いますか?
- デフォルトでは配列は位置で比較されるため、要素の並べ替えは変更として表示されます。「配列の順序を無視」をオンにすると配列が多重集合として比較され、本当に追加・削除されたメンバーだけが指摘されます。
- なぜ 1 と "1" が別物として表示されるのですか?
- JSONの型が異なるためです。一方は数値、もう一方は文字列です。JSON Diffはこれを通常の値変更とは別の型変更として表示するため、APIレスポンス内のうっかり文字列化された数値を見つけられます。
- 差分の user.roles[2] のようなパスは何を意味しますか?
- 変更が起きた正確な場所を指します。キー user、その roles 配列、そしてインデックス2の要素です。オブジェクトキーはドット、配列要素は角括弧付きインデックスで表されます。
- 深くネストしたJSONやネストした配列を比較できますか?
- はい。JSON Diffは両方のドキュメントを任意の深さのネストしたオブジェクトと配列まで再帰的にたどり、各変更を完全なパス付きで報告するため、大きく深くネストしたペイロードでも読みやすさが保たれます。
- JSON Diffに貼り付けたJSONはどこかにアップロードされますか?
- いいえ。両方のドキュメントは完全にブラウザー内で解析・比較されるため、貼り付けたJSONは機密フィールドを含めお使いのデバイスに留まり、サーバーへ送信されることはありません。
関連ツール
すべての ArrayKit ツール