JSON構造比較
APIレスポンスや設定ファイルなど2つのJSONを、構造に基づいて比較するツールです。オブジェクトのキーの順序や空白・インデントの違いは無視し、追加・削除・値の変更を対象のパスと変更前後の値つきで表示します。すべてブラウザ内で処理されます。
左右にJSONを入力すると、構造の差分がここに表示されます。
使い方
- 左に変更前、右に変更後のJSONを貼り付けるか、ファイルを読み込みます。
- 差分が自動で計算され、「追加」「削除」「変更」がパスと変更前後の値つきで表示されます。
- JSONに構文エラーがある場合は、左右どちらの何行目に問題があるかが表示されます。
- 「コピー」で差分の一覧をタブ区切りのテキストとしてコピーできます。
このツールについて
通常のテキスト差分では、キーの並び順や整形が違うだけでも大量の差分が出てしまいます。JSON構造比較ツールは、JSONを解析したうえで値同士を比較するため、意味のある変更だけを確認できます。
オブジェクトはキーで、配列はインデックス順で比較します。存在しないキーと null、数値の 1 と文字列の "1" は別の値として扱います。パスは $.user.name のような形式で、キーにドットや記号が含まれる場合は $["a.b"] のように表記するため、対象を正確に特定できます。
配列内のオブジェクトをIDで突き合わせたり、並べ替えを検出したりする機能は現在ありません。入力したJSONがサーバーへ送信されることはありません。
変更前を {"count":1,"active":true}、変更後を {"active":true,"count":"1"} にすると、$.countの数値1から文字列「1」への変更だけが表示されます。activeの位置が変わったことは差分にならず、型の変化に絞って確認できます。
空のオブジェクトとキーがない状態も区別します。APIの返却値を比べる場合は、毎回変わる時刻や識別子も通常の差分になるため、まず業務上重要なパスを確認すると判断しやすくなります。差分表示から入力の値が書き換えられることはありません。
よくある質問
キーの順序が違うだけのJSONはどうなりますか?
差分なしと表示されます。空白やインデント、改行の違いも無視されます。
配列の要素の順番が変わった場合は?
配列はインデックス順に比較するため、並べ替えは各インデックスでの値の変更として表示されます。IDによる突き合わせは今後の検討事項です。
JSONがサーバーに送信されることはありますか?
ありません。解析と比較はすべてブラウザ内で行われます。