JSON 差分
2 つの JSON ドキュメントの構造的差分 — 追加・削除・変更されたキーと値の変化を並べて表示。
上に入力すると結果が表示されます。
用途
JSON に対してプレーンテキスト diff をかけると「どの行が変わったか」しか分かりません。構造的 diff は「どのデータポイントが変わったか」を教えてくれます。同じ意味で再フォーマットしただけのドキュメントは、テキスト diff では「全行が違う」になりますが、構造的には「変更なし」です。本ツールは両方の JSON ツリーを巡回し、差分のあるパスを RFC 6901 JSON Pointer(/users/0/name)で報告するため、フォーマットに左右されない明確な出力になります。
使うべきタイミング
- 2 つの API レスポンスを比較し、空白やキー順序のノイズを無視して、リリースで実際に何が変わったか確認したいとき。
- マイグレーション前後の設定ファイルを比較し、意図したフィールドだけ動いたか確認したいとき。
- RFC 6902 の JSON Patch を生成し、それを受け付けるシステム(PATCH エンドポイント、JSON-Merge-Patch のフォールバック)に送りたいとき。
- 2 つのテストフィクスチャを見比べ、片方だけ落ちる原因を推測したいとき。
よくある注意点
- 配列比較モードは大事です。 「by index」は要素を 1 つ挿入すると以後の全要素が remove+add になります。「by value」は集合扱いなので、本物の並び替えを見落とします。データの想定順序に合うほうを選んでください。
- 数値と文字列は構造的には別物です。
{"id": 1}と{"id": "1"}は型が違うため変更として表示されます。気になる場合は事前に型を正規化してください。 - RFC 6902 は一方向のパッチであり、マージではありません。 本物の RFC 6902 実装で適用してください。文字列置換で適用してはいけません。
- 巨大なツリーはノイジーになります。 数百件もの差分が出るなら、関係のない 2 つのドキュメントを比べている可能性が高いので、入力を確認してください。