本文へスキップ

JSON差分比較

JSON Diff

キーの順序を無視して2つのJSONを構造で比べ、追加・削除・変更されたパスを挙げます。

2つのJSON文書を、テキストとしてではなく構造として比べます。だからキーの順序やインデントの違いは差分になりません。出力は、何が変わったかを読める表と、左の文書を右の文書へ正確に変えるRFC 6902のパッチの2つです。

🔒 ブラウザの中だけで動きますjsondiffcompare
配列の比較

先に二つの配列を突き合わせます。一つ挿入しただけなら百件ではなく一件になります。

左

右

使い方

  1. 2つの文書を貼り付けます

    APIのレスポンス2つ、設定ファイル2つ、あるいは変更の前と後です。比較はワーカーで走り、入力に合わせて更新されます。

  2. 配列の比べ方を選びます

    結果が使い物になるかどうかを決める設定です。「揃えて」は2つの配列を先に対応づけるので、要素を1つ挿入したことが1件の変更になります。「位置で」は同じ位置どうしを比べるもので、順序そのものがデータであるときに正しい選択です。「キーで」は指定したメンバーで要素を対応づけます。同じものを違う順序で返す2つのレスポンスに対する答えです。

  3. nullを「無い」とみなすかどうかを決めます

    空のフィールドをそもそも出さないシリアライザもあれば、`null`と書くものもあります。異なる2つのスタックの出力を比べているなら、これを有効にするだけで偽の差分が1ページ分消えます。

  4. 表を持っていくか、パッチを持っていきます

    表は読むため、パッチは適用するためのものです。どちらも経路はRFC 6901のポインタなので、JSON Patchを解するどのツールにも貼り付けられます。

よくある質問

配列に1つ挿入しただけなのに、100件の変更として出るのはなぜですか

配列の比べ方が「位置で」になっているからです。1番目と2番目を比べることになり、全部がずれます。2つの配列を先に対応づける「揃えて」に変えるか、要素にidがあるなら「キーで」を使ってください。

パッチをここで適用できますか

できません。このページは作るだけです。ただしパッチは正確です。左の文書に適用すれば、データモデルの水準で右の文書がそのまま出てきますし、その往復は変更のたびにテストが確かめています。

「2つの文書は関係がない」と出ます

変更が2万件を超えて比較を止めたときに出る案内です。その地点から先、差分は役に立つことを何も言えません。1つの文書の2つの版ではなく、まったく別の2つの文書を比べています。

キーの順序が問題になることはありますか

このツールにとってはありません。JSONのオブジェクトには順序がないので、キーの順序だけが違う2つの文書は同一だと報告します。受け取る側にとってキーの順序が問題になるなら、その受け取る側はJSONが約束していないものに頼っています。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。