2つのJSON設定を差分して実際の変更点を見つける

環境ごとの設定やAPIレスポンスは微妙にずれます。構造的なJSON差分で追加・削除・変更のパスを一覧します。

このガイドで使う道具

やりたいこと

「同じはず」の設定ファイル2つで挙動が違う、APIレスポンスの形が変わって利用側が壊れた、という場面です。テキスト比較だとキーの順や整形の違いまで全部差分になりますが、構造比較なら実際に変わったパスだけが出ます。

具体例

左: {"name": "app", "options": {"debug": false, "retries": 3}}。右は同じものに "debug": true と新しい "options.timeout": 30 を加えたもの。差分の一覧は変更 $.options.debug(false → true)と追加 $.options.timeout の2件だけです。

左右それぞれにJSONを貼り付けます。空白・キー順・整形の違いは結果に影響しません。まず両辺がJSONとして成立している必要があります。

  • オブジェクトはキー、配列はインデックスで対応づけるため、順序だけ変わった配列は差分として出ます。
  • 各辺2MBまで。値は厳密等価で比較します(1と"1"は別物です)。

特に役立つ場面

環境間の設定コピーの監査、依存更新でロックファイルのある節に何が増えたかの確認、同僚の設定変更のレビューなどです。JSONでないテキスト同士なら単語差分を使ってください。