使い方
- 左に元のJSON、右に変更後のJSONを貼り付けるか、例をお試しください。
- 配列の比較方法を選択します。位置で比較するか、挿入された項目が1回だけ報告されるように項目を一致させるかを選べます。
- 差分はリストまたは横並びで確認できます。それぞれにルート($)からのパスが表示されます。
- レポートをコピーして、チケットやコードレビューに貼り付けられます。
仕組み
両方のドキュメントはテキストとしてではなくデータとして解析・比較されます。オブジェクトはキーごとに比較されるため、キーの順序や空白・インデントは関係ありません。数値は値で比較されるため、1と1.0は等しいとみなされます。
各差分にはJSONPath式のようなパスが付けられます。$はルート、.nameはプロパティ、[2]は配列インデックスを表します。単純な名前ではないキーは、$["first-name"]のように引用符で囲まれます。差分には4種類あります。追加(右側のみ)、削除(左側のみ)、変更(型は同じで値が異なる)、型の変更(例:数値の44.9が文字列"44.90"になった、または値がnullになった)です。オブジェクトや配列全体が追加・削除された場合は、フィールドごとではなく、そのパスで1回だけ報告されます。
配列はデフォルトでは位置で比較されます。要素0同士、要素1同士と比較されます。先頭に項目が挿入されると、それ以降のすべての項目が変化したように見えます。「移動した項目を一致させる」は、まず最長共通部分列を使って2つの配列の位置を合わせるため、挿入や削除は1回だけ報告され、残りの項目は正しくペアになります。追加された項目は右側のインデックス、削除された項目は左側のインデックスが使われます。非常に大きな配列(約200万項目ペア超)では照合はスキップされ、位置で比較されます。
一覧内のキーのパスは、各オブジェクト内でアルファベット順に並べ替えられます。最大2,000件の差分が表示されます。コピーされたレポートには常にすべての差分が含まれます。
使用例
API変更の確認
同じ注文に対する昨日と今日のレスポンスを比較します。差分には、$.statusが"pending"から"shipped"に変更、$.totalが数値から文字列に型変更、$.couponが削除、$.customer.phoneが追加されたことが表示されます。
設定ドリフト
ステージング環境と本番環境のJSON設定を貼り付けます。キーの順序は無視されるため、ファイルが異なるツールで保存された場合でも、$.cache.ttl 300 → 60 のような実際の差分だけが表示されます。
項目が挿入されたリスト
商品リストの先頭に新しい項目が追加された場合。位置で比較するとすべての商品が変更されたように見えますが、「移動した項目を一致させる」を使うと結果は「Added $[0]」の1件だけになります。
よくある質問
テキスト差分とはどのように違いますか?
テキスト差分は行を比較するため、キーの並べ替えや再フォーマットが変更として表示されます。このツールは解析済みのデータを比較するため、値・型・構造の違いだけが報告されます。
1件の挿入で配列に多数の変更が表示されるのはなぜですか?
「位置で比較」モードでは同じインデックス同士を比較するため、挿入があるとそれ以降の項目がすべてずれます。「移動した項目を一致させる」に切り替えると、同じ項目を先に揃えます。
「1」と1は同じものとして扱われますか?
いいえ。一方は文字列、もう一方は数値であるため、型の変更として報告されます。同じ型の値は厳密に比較されます。
非常に大きなファイルを比較できますか?
数メガバイト程度のファイルは処理できますが、すべてブラウザーのメモリ上で処理されるため、非常に大きな文書はスマートフォンでは遅くなる場合があります。
プライバシー
両方のドキュメントはブラウザ内でのみ解析・比較されます。アップロード、保存、分析への利用は一切ありません。