このツールについて
2 つの API レスポンスを単純なテキスト差分で比べると、キーの並び順や空白の違いまで変更として表示され、データが同じでもノイズだらけになります。このチェッカーは両方のドキュメントを解析して構造を比較するため、本当の差分だけが報告されます。各差分は JSONPath 形式の位置($.user.roles[1])と種類(追加、削除、変更、型変更)つきで一覧表示されます。型変更は、「"49.99" と 49.99」のような典型的なバグです。失敗したアサーションの説明、API バージョン間のコントラクト変更のレビュー、スナップショット更新を受け入れる前の確認に使えます。
使い方
- 左に期待値(または旧バージョン)の JSON、右に実際の値(または新バージョン)の JSON を貼り付けるか、「Load sample」(サンプルを読み込む)をクリックします。
- 変更一覧を確認します。各行に変更の種類、パス、変更前 → 変更後の値が表示されます。
- ロール、タグ、順不同の検索結果など、配列が実質的に集合である場合は「Ignore array order」(配列の順序を無視)にチェックを入れます。
- 「Side by side」(左右に並べて表示)または「Unified」(統合表示)に切り替えると、変更を文脈の中で確認できます。どちらのビューも先にキーを並べ替えるため、並び順の違いは報告されません。
JSON 差分チェッカー のよくある質問
「changed」(変更)と「type-changed」(型変更)の違いは何ですか?
「changed」(変更)は、JSON の型は同じで値が異なることを意味します(例:"pending" が "shipped" になる)。「type-changed」(型変更)は、数値が文字列になる、オブジェクトが null になるなど、型そのものが異なることを意味します。型変更は、値が同じに見えても厳密に型付けされたクライアントを壊すコントラクトのバグであることが多いです。
「Ignore array order」(配列の順序を無視)がオンのとき、配列はどう比較されますか?
左の各要素を、右の完全に等しい要素と対応付けます。残った要素は、それぞれのインデックスで削除または追加として報告されます。重複も数えるため、[1, 2, 2] と [2, 1] は異なると判定されます。要素は完全一致で対応付けられるため、順不同の配列内でオブジェクトが変更された場合は、1 件の削除と 1 件の追加として表示されます。
これらのパスをテストで使えますか?
はい。単純なキーにはドット記法、スペースや記号を含むキーにはブラケット記法を使っているため、JSONPath テスターでそのまま使え、REST Assured や Postman などの JSONPath アサーションにも直接対応します。