JSON Diff
Compare two JSON documents structurally: added/removed keys, changed values and type changes with exact paths, ignoring key order.
JSONの項目追加・削除・値変更・型変更を一画面で確認
JSON Diffとテキスト比較の違い
JSON Diffは2つのJSONをオブジェクトとして解析してから階層ごとに比較するツールです。意味上の構造差分だけを報告し、各差分にはJSONPath、変更タイプ、変更前後の値が表示されます。
オブジェクトのキー順序の違いは差分になりません
通常のテキスト比較では、{\"a\":1,\"b\":2}と{\"b\":2,\"a\":1}は文字の順序が異なるため、異なる内容として判定されます。しかしJSONの意味上では、この2つのオブジェクトは完全に同じです。JSON Diffはフィールド名を基準に値を比較するため、キーの順序が変わっても差分は発生しません。
識別できる4種類の差分
追加(BにありAにないフィールド)、削除(AにありBにないフィールド)、値の変更(同じパスの値が異なる場合)、型の変更(数値18が文字列18になるなど)の4種類です。配列はインデックス単位で要素を比較し、ネストされたオブジェクトや配列も階層ごとに比較します。差分一覧は+ / - / ~ / !の4種類のプレフィックスを付けたプレーンテキストとしてコピーできます。
結果エリアの見方
結果テーブルには、パス、タイプ、JSON Aの値、JSON Bの値の4列が表示されます。パスはJSONPath形式で、たとえば$.user.nameや$.list[0].idのように表されます。下部の完全な差分JSONでは、各差分を構造化された配列としてまとめているため、開発者にそのままコピーして変更箇所を伝えられます。統計欄には差分件数と追加、削除、変更、変更なしの件数が表示され、型の変更は値の変更とは別に扱われます。
2つの比較オプション
配列順序を無視すると、配列を集合として比較し、[1,2]と[2,1]を同じものとして扱えます。要素の順序に意味がないタグや権限リストなどに適しています。文字列の前後の空白を無視すると、両端の空白や改行による見かけ上の差分を無視できます。オプションを変更するとすぐに再比較され、比較方法だけが変わり、両側の入力内容は変更されません。
ローカルファイルを比較する方法
ファイルアップロードタブに切り替え、2つの.jsonファイルを左側と右側のドロップエリアにそれぞれドラッグするか、ファイル選択から個別に指定します。ファイルはブラウザ内でFileReaderを使用して読み込まれ、1ファイルあたりの上限は10 MBです。左右両方の読み込みが完了すると自動的に比較が開始され、ボタンを押す必要はありません。ファイルの内容がブラウザの外へ送信されることもありません。
差分が発生する主な原因
APIフィールドの名前変更は、同じパスでの削除と追加として表示されます。デフォルト値の変更は値の変更として表示されます。ブール値と文字列を混在させた場合(trueと文字列のtrueなど)は型の変更として識別されます。配列の順序変更は、配列順序を無視する設定を有効にしていない場合、要素ごとに差分として表示されます。まずパスで対象フィールドを確認し、次に型を確認すると、通常は変更箇所をすぐに特定できます。2つのデータが完全に同じ場合、結果エリアには空の表ではなく差分なしと表示されます。
JSON Diffはオブジェクトのキー順序を無視しますか?
JSON Diffは2つのJSONを解析してから階層ごとに比較するため、オブジェクトのキー順序が異なっても差分にはなりません。報告されるのはフィールドの追加、削除、値の変更、型の変更です。
各差分にはJSONPathが表示され、たとえば$.user.nameのようにAPIフィールドやソースコード上の位置を直接確認できます。
- 解析してから比較するため、オブジェクトのキー順序が違っても差分になりません
- 差分を追加・削除・値の変更・型の変更の4種類に分類し、それぞれにJSONPathを表示
- 配列は集合として比較でき、[1,2]と[2,1]を同じものとして扱えます
- 差分一覧は+ / - / ~ / !の4種類のプレフィックス付きプレーンテキストとしてコピーできます
- ファイル比較は1ファイル10 MBまで対応し、左右両方の読み込み完了後に自動比較
- すべてブラウザ内で処理し、入力内容はサーバーにアップロードされません