JSON の構造比較

2 つの JSON 構造を比較し、明示的なパスごとに追加、削除、変更を確認します。数値の表記は丸めずに保持します。

現在の対象範囲で、この言語に対応しているツールを表示しています。サイト内のすべてのツールがすべての言語に翻訳されているという意味ではありません。

処理はローカルで行い、入力のアップロードや自動保存はしません。各入力の上限は UTF-8 で 256 KiB、合計 512 KiB です。深さは 32、値は入力ごとに 30,000 個、差分は 2000 件、レポートは 1 MiB までです。比較は 5 秒で停止します。

オブジェクトのキーの順序は無視します。配列はインデックスごとに比較し、要素の移動は検出しません。数値は表記で比較します。1, 1.0, 1e0 は異なり、大きな数値も丸めません。JSON 文字列はデコードして比較し、Unicode の正規化は行いません。枝の型を変更したり、枝を追加または削除したりすると、その枝全体を含む 1 行が生成されます。

比較する入力

使い方

変更前と変更後の JSON テキストを貼り付け、比較してください。変更の種類、パス、変更前後の JSON テキストを確認し、必要に応じてプレビューのページを切り替えます。自分で選択してレポート全体をコピーするか、json-diff.json としてダウンロードしてください。入力を編集すると前の結果は無効になります。レポートが入力を置き換えることはありません。

使用例

変更前:{"n":1,"a":[1,2]}。変更後:{"a":[2,1],"n":1.0}。変更は 3 件です:/n はテキスト 1 から 1.0、/a/0 は 1 から 2、/a/1 は 2 から 1 になります。オブジェクトの 2 つのキーの順序を変えるだけでは変更は増えません。キー a/b~c はパス /a~1b~0c に表示されます。

対応範囲と制限

オブジェクトのキーの順序は無視しますが、配列はインデックスごとに比較します。要素の移動や集合としての一致は推定しません。数値は元の表記で比較します。1, 1.0, 1e0 は異なり、Number には変換しません。JSON 文字列はデコードして比較し、Unicode の正規化は行いません。枝を追加または削除したり、型を変更したりすると、その枝全体を含む 1 行が生成されます。空のパスはルートを示します。JSON Pointer は ~ を ~0、/ を ~1 としてエスケープします。レポートの before と after フィールドは、コンパクトな JSON を含む文字列であり、丸めた数値ではありません。一方が存在しない場合はそのフィールドを省略し、JSON null は文字列 "null" で表します。レポートは差分を記述するもので、変更を適用する JSON Patch ではありません。処理はブラウザー内で完結し、JSON の内容を実行、アップロード、自動保存、自動コピーすることはありません。

よくある質問

同じという結果は、テキストがバイト単位で完全に一致することを意味しますか?

いいえ。文字列の外側の空白、オブジェクトのキーの順序、文字エスケープの表記が異なっていても、この規則では値が同じになる場合があります。その場合、changes リストは空になりますが、レポートはコピーやダウンロードができます。一方、数値の表記や配列要素の順序が違えば、意味が似て見えても差分として扱います。

関連ツール