JSON Diff

2つのJSONドキュメントを比較し、追加・削除・変更された箇所を構造的な差分として表示します。すべてブラウザー内で動作します。

2つのJSONドキュメントはブラウザー内でローカルに解析・比較され、アップロードされることはありません。ただし、本番環境の機密情報や認証情報をどのオンラインツールにも貼り付けないようにしてください。

結果を整形し直したいですか?JSON整形ツールをお試しください。

JSON Diff について

JSON Diffは2つのJSONドキュメントを比較し、行単位のテキスト差分ではなく構造的な差分を表示します。元のJSONを左に、変更後のJSONを右に貼り付けると、両方を解析し、どの値が追加・削除・変更されたか、あるいは型が変わったかを user.roles[2] のようなパス付きで正確に示します。比較はセマンティックなので、オブジェクトキーの並べ替えが差分として表示されることはなく、本当に意味のある変更だけが見えます。「配列の順序を無視」をオンにすると配列を集合として比較でき、「キーをソート」をオンにすると並べて表示する際に両側を正規化できます。APIレスポンス・設定ファイル・フィクスチャを差分比較する開発者のために作られています。すべてはブラウザー内でローカルに動作するため、貼り付けたJSONがアップロードされることはなく、お使いのデバイスに留まります。

機能

JSON Diff の使い方

  1. 元のJSONを左側の「Original」ボックスに貼り付けます。
  2. 更新後のJSONを右側の「Changed」ボックスに貼り付けます。
  3. 色付きの差分を読みます。緑は追加、赤は削除、橙は変更された値です。
  4. 順序を差分として数えない場合は「配列の順序を無視」または「キーをソート」を切り替えます。
  5. 並べて表示に切り替えて両方の整形済みドキュメントを比較するか、差分サマリーをコピーします。

入力

// Original
{ "name": "Ada", "roles": ["admin"], "active": 1 }

// Changed
{ "active": "1", "name": "Ada", "roles": ["admin", "editor"] }

出力

+ roles[1]: "editor"
~ active: 1 → "1"   (type changed)

並べ替えられたキーは無視され、新しい配列要素が追加され、active が数値から文字列に変わっています。

よくあるエラーとトラブルシューティング

よくある質問

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 ツール