← JSON ツールに戻る

JSON 差分

最終更新:2026年10月2日

2 つの JSON ドキュメントを比較し、本当に違う部分だけを表示します。比較は構造で行うため、キーの並べ替えや再フォーマットは差分になりません。実際の変更をパスごとに一覧します。すべてブラウザ内で完結します。

テキストではなく構造 キーの順序を無視 ブラウザ内で動作 アップロード不要 オープンソース (MIT)

構造による比較が見るもの

両方のドキュメントはまず解析され、それから一緒に走査されます。報告されるのはデータそのものの違いだけです。片側にしかないキー、値の変更、型の変更——数値が文字列になった、オブジェクトが配列になった、といったものです。空白とキーの順序は比較に一切関与しません。解析後には存在しないからです。

型の変更は、それが起きたパスで 1 回だけ報告されます。下にある葉ノードごとに削除と追加へ展開されることはありません。サブツリー全体が形を変えたときに、レポートを読みやすく保てます。

これがテキストの行差分ではない理由

テキストの差分——git diff が示すもの——は行を比較します。JSON では、これがしばしば誤解を招きます。JSON を別のツールや別のバージョンのライブラリが生成すると、再インデントや、同じキーを違う順序で出力することはごく普通に起こり、行差分はそれを、データが同一であるにもかかわらず大量の変更に見せてしまいます。

次の 2 つのドキュメントは同じドキュメントです。行差分は 4 行の変更を報告しますが、このツールは何も報告しません。

{"a": 1, "b": 2}

{
  "b": 2,
  "a": 1
}

逆も成り立ち、そこが役に立つところです。キー名の 1 文字の変更や、数値が 3 から 4 への変更は、ちょうど 1 件の変更として示され、整形のノイズに埋もれません。

パス表記の読み方

すべての変更はパスで報告されます。$ はドキュメントのルート、ドットはオブジェクトのキーへ進み、角括弧は配列の添字です。つまり $.settings.indent は settings の中の indent キー、$.features[2] は features 配列の 3 番目の項目、$["weird key"] は単純な識別子でないキーを表します。表記は JSON Pointer と同じ流儀なので、レポートのパスはそのまま他の JSON ツールに貼り付けられます。

差分が教えてくれないこと

よくある質問

キーの順序は比較結果に影響しますか?

いいえ。両方のドキュメントは比較の前に解析され、オブジェクトのキーは位置ではなく名前で突き合わせます。したがって、再フォーマットしたりキーを別の順序で出力したりしても差分は空になり、これは正しい結果です。データは同じだからです。

配列の先頭に 1 項目を挿入しただけで、なぜこんなに多くの差分が出るのですか?

配列は位置で突き合わせます。これはほとんどすべての構造差分ツールと同じです。長い配列の先頭に項目を挿入すると、それ以降の要素が 1 つずつ後ろにずれるため、値が移動しただけでもそれぞれが変更として報告されます。突き合わせるキーがなければ、どの項目が挿入でどれが変更かを知る方法はありません。項目に安定した id があるなら、比較の前に両側をその id で並べ替えてください。

片側が有効な JSON でない場合はどうなりますか?

比較は停止し、失敗した側のパーサー自身のメッセージを、左か右かを示して表示します。両方が解析できないと 2 つのドキュメントを一緒に走査できないため、比較は行われません。

私の JSON はどこかにアップロードされますか?

いいえ。両方のドキュメントはブラウザ内で JSON.parse によって解析され、メモリ上で比較されます。それらを運ぶリクエストはなく、アカウントもサーバー側の保存もありません。ページを読み込んだあとにネットワークを切断しても、比較は動作します。

値が変更ではなく移動したことを判定できますか?

いいえ。このツールは差分を報告するもので、パッチを作るものではありません。JSON Patch ドキュメントを出力せず、ある場所から別の場所へ移動した値を検出しません。古いパスでの削除と、新しいパスでの追加として表示されます。

コメントや末尾カンマのある JSON も比較できますか?

いいえ。比較はサイトの他のツールと同じ厳格なパーサーを使うため、JSON5、コメント、末尾カンマは拒否されます。解析に失敗する場合は、まずフォーマッターかバリデーターで問題の位置を確認してください。

JSON を表にしたいですか?JSON を CSV に変換 が使えます。不具合を見つけましたか?お問い合わせ。