このツールの動作
両側を正規化し——字下げは空白二つ、キーは並べ替え——行ごとに比較して、結果を統合差分形式で示します。
@@ -2,4 +2,4 @@
"host": "localhost",
- "port": 8080,
+ "port": 3000,
"tls": true
- が元、+ が変更後で、@@ の行が範囲を示します。git diff と patch が話す形式です。
何を差分とみなすか
| 差分か | |
|---|---|
| 字下げ、改行 | いいえ |
| オブジェクトのキーの順序 | 既定ではいいえ |
| 配列の要素の順序 | はい |
| 変わった値 | はい |
オブジェクトと配列を分けて扱うのは、JSON がそう扱うからです。オブジェクトは順序のない組の集合、配列は並びです。オブジェクトのキーを並べ替えても同じ値ですが、配列の要素を並べ替えれば別の値になります。
最後の一桁まで
{ "id": 12345678901234567890 }
{ "id": 12345678901234567891 }
この二つの文書は違い、このツールはそう言います。
わざわざ書くのは、かつてそうでなかったからです。普通の JSON 解析で両側を正規化すると、すべての数値が倍精度浮動小数点を通り、二十桁で最後の一桁だけが違う二つの識別子は同じ値に潰れました。差分は空で返り、それは違いなしと読まれます。
空の差分は、肩をすくめる仕草ではなく、主張です。 比較の道具とは、目に見えないものを見てくれと頼む相手そのものです。いまは両側を失わずに読み、書かれたままの形で比べます。
重複キーは報告する
どちらかの文書がキーを繰り返していれば、比較は止まってそう告げます。JSON フォーマッターと同じです。それぞれの最後だけを残す——多くの解析器が黙ってやること——は、比較が始まる前に、二つのファイルの本物の違いを消してしまいかねません。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。