100% ローカル — データがブラウザの外に出ることはありません

JSONの差分を比較|どの値が変わったのかがそのまま見えます

二つのJSON文書を比べます。字下げとキーの順はあらかじめ揃えられるので、画面に出てくるのは本当に違っている箇所だけです。数字の一桁の違いまではっきり見て取れます。

高速 プライベート Cookieゼロ

変更前

変更後

差分

このツールの動作

両側を正規化し——字下げは空白二つ、キーは並べ替え——行ごとに比較して、結果を統合差分形式で示します。

@@ -2,4 +2,4 @@
   "host": "localhost",
-  "port": 8080,
+  "port": 3000,
   "tls": true

- が元、+ が変更後で、@@ の行が範囲を示します。git diff と patch が話す形式です。

何を差分とみなすか

差分か
字下げ、改行いいえ
オブジェクトのキーの順序既定ではいいえ
配列の要素の順序はい
変わった値はい

オブジェクトと配列を分けて扱うのは、JSON がそう扱うからです。オブジェクトは順序のない組の集合、配列は並びです。オブジェクトのキーを並べ替えても同じ値ですが、配列の要素を並べ替えれば別の値になります。

最後の一桁まで

{ "id": 12345678901234567890 }
{ "id": 12345678901234567891 }

この二つの文書は違い、このツールはそう言います。

わざわざ書くのは、かつてそうでなかったからです。普通の JSON 解析で両側を正規化すると、すべての数値が倍精度浮動小数点を通り、二十桁で最後の一桁だけが違う二つの識別子は同じ値に潰れました。差分は空で返り、それは違いなしと読まれます。

空の差分は、肩をすくめる仕草ではなく、主張です。 比較の道具とは、目に見えないものを見てくれと頼む相手そのものです。いまは両側を失わずに読み、書かれたままの形で比べます。

重複キーは報告する

どちらかの文書がキーを繰り返していれば、比較は止まってそう告げます。JSON フォーマッターと同じです。それぞれの最後だけを残す——多くの解析器が黙ってやること——は、比較が始まる前に、二つのファイルの本物の違いを消してしまいかねません。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

なぜキーを並べ替えただけの JSON が同一と表示されるのですか。
JSON のオブジェクトは名前と値の組からなる順序のない集合だからです。キーの現れる順が違う二つの文書は、同じ値を持ちます。比較の前に両側を並べ替えます。並べ替えそのものを見たいときは設定を切ってください。ファイルを書き換えた道具の前後を見る場合などです。
なぜ配列の要素を並べ替えると差分になるのですか。
配列の順序はその値の*一部*だからです。`["read", "write"]` と `["write", "read"]` は別の JSON の値であり、それを隠す比較器は、マイグレーションの順序、パイプラインの手順、順番を持つあらゆるものの変更を隠すことになります。
どちらかのファイルで同じキーが二度現れたら。
黙って片方に決めるのではなく報告します。JSON フォーマッターと同じ答えです。繰り返されたキーの最後だけを残して二つの文書を比べれば、二つのファイルの間にある本物の違いが消えかねません。

関連ツール