メインコンテンツへスキップ

JSON差分比較

2つのJSONを構造で比較し、追加・削除・変更・型変化を一覧表示する無料オンラインツール。キーの順序やインデントの違いは差分になりません。配列はID突き合わせにも対応し、JSON Patch(RFC 6902)としても出力できます。ブラウザ完結で入力したデータは送信されません。

2つのJSONをテキストではなく構造として比較するツールです。キーの順序やインデントが違うだけの差分は報告せず、実際に値が変わった箇所だけを一覧表示します。配列はIDでの突き合わせにも対応し、結果はJSON Patch形式でも出力できます。

JSON差分比較
配列の比較
出力
パス表記
左右にJSONを貼り付けると差分が表示されます...

💡 キーの順序とインデントの違いは差分になりません。値そのものが変わった箇所だけが表示されます。

// JSON差分比較の機能と特徴

テキスト比較との違い

通常の差分ツールは文字列として比較するため、`{"a":1,"b":2}` と `{"b":2,"a":1}` のように**中身が同じでもキーの順序が違うだけで全行が差分**になります。インデントが2スペースと4スペースで違うだけでも同じことが起きます。本ツールはJSONとして解析してから構造を突き合わせるので、こうした見た目の違いは無視され、値が本当に変わった箇所だけが残ります。テキストとして比較したい場合は テキスト差分比較 をお使いください。

追加・削除・変更・型変化の違い

**追加**(Bにだけ存在するキー・要素)、**削除**(Aにだけ存在)、**変更**(同じ型で値が違う)、**型変化**(`"3"` と `3` のように型そのものが変わった)の4つを色分けして表示します。とくに型変化は重要で、APIの仕様変更で数値が文字列になった、設定ファイルで真偽値がクォートされてしまった、といった**動くけれど壊れている**バグの原因になります。通常の差分ツールでは単なる値の変更と区別がつきません。

配列の差分が増えすぎる原因と対処

配列の比較方法を「順番で比較」と「キーで突き合わせ」から選べます。順番で比較は先頭から位置どうしを見るため、要素が1つ増えると以降すべてがズレて差分だらけになります。APIレスポンスのように**順序が保証されない配列**では、`id` などのフィールドで突き合わせる方が実態に合います。突き合わせキーは自由に指定でき、`id` 以外に `key` や `name` も使えます。

JSON Patch (RFC 6902) とは

差分を JSON Patch 形式で出力できます。これは `add` / `remove` / `replace` の操作列でJSONの変更を表現するIETFの標準仕様で、多くの言語にライブラリがあります。**「AをBに変えるには何をすればいいか」を機械可読な形で得られる**ため、APIのPATCHリクエストの組み立て、設定変更の適用スクリプト、変更内容の記録などにそのまま使えます。パス表記はドット記法とJSON Pointerを切り替えられます。

本番データを比較しても外部送信されない理由

解析も比較もすべてブラウザ内のJavaScriptで完結し、貼り付けたJSONが外部サーバーに送信されることはありません。個人情報を含むAPIレスポンス、認証情報を含む設定ファイル、本番とステージングの環境差分など、**外部に出せないデータこそ比較したい場面**で安心して使えます。比較前にJSONを整えたい場合は JSON整形ツール、値の場所を調べたい場合は JSONPath検索 が便利です。

// JSON差分比較に関するよくある質問

キーの順序が違うだけで差分になりませんか?

なりません。本ツールはJSONを解析してから構造として比較するため、キーの出現順は無視されます。`{"a":1,"b":2}` と `{"b":2,"a":1}` は「差分なし」と表示されます。インデント幅や改行位置の違いも同様に無視されます。これがテキスト差分ツールとの最大の違いです。

「型変化」とは何ですか?

値の型そのものが変わったことを指します。たとえば `"replicas": 2` が `"replicas": "3"` になった場合、数値から文字列に変わっているので型変化として報告します。JSONスキーマのバリデーションを通らなくなったり、比較演算が意図通り動かなくなったりする原因になるため、単なる値の変更とは分けて表示しています。

配列の比較で「順番」と「キー」はどう使い分けますか?

要素の順序に意味がある配列(手順のリスト、時系列のログなど)は「順番で比較」、順序が保証されない配列(APIが返すレコードの一覧など)は「キーで突き合わせ」が適しています。後者では `id` のようなフィールドで要素を対応付けるため、並び順が変わっただけでは差分になりません。

突き合わせキーを持たない要素はどうなりますか?

キーで突き合わせるモードでも、指定したフィールドを持たない要素(数値や文字列だけの要素など)は位置で比較されます。オブジェクトとプリミティブが混在した配列でも動作しますが、そうした配列は設計上あいまいなので、可能ならデータ側を揃えることをおすすめします。

JSON Patch はそのまま使えますか?

RFC 6902 に沿った `op` / `path` / `value` の配列として出力するので、各言語のJSON Patchライブラリでそのまま適用できます。ただし配列に対する `add` と `remove` はインデックスの解釈が実装によって異なる場合があるため、配列を多く含む差分を適用する際は事前に動作を確認してください。

ドット記法とJSON Pointerの違いは何ですか?

ドット記法(`$.users[0].name`)は人が読みやすく、JSONPathの記法に近い形式です。JSON Pointer(`/users/0/name`)はRFC 6901の標準で、JSON Patchで使われるのはこちらです。差分を人に伝えるならドット記法、機械的に処理するならJSON Pointerを選んでください。

大きなJSONも比較できますか?

数千行程度であれば問題なく動作します。ただし再帰的に全要素を走査するため、数万行を超える巨大なファイルではブラウザが重くなる可能性があります。その場合は比較したい部分だけを抜き出すか、`jq` などのコマンドラインツールの使用をおすすめします。

差分がありすぎて読めない場合は?

まず配列の比較方法を「キーで突き合わせ」に変えてみてください。要素が1つ増減しただけで以降すべてがズレる、というのが差分が膨れ上がる最大の原因です。それでも多い場合は、比較したいオブジェクトの階層だけを取り出して貼り付けると見通しが良くなります。

JSONとして不正な場合はどうなりますか?

左右それぞれについて解析エラーを表示し、どちらのJSONに問題があるかが分かるようにしています。エラーメッセージにはブラウザのパーサーが停止した位置が含まれます。末尾カンマ・シングルクォート・コメントはJSONでは使えないため、これらがよくある原因です。

比較する2つのJSONはサーバーに送信されますか?

いいえ、解析も比較もすべてブラウザ内のJavaScriptで完結します。個人情報を含むAPIレスポンス、認証情報入りの設定ファイル、本番環境のデータなども外部に送信されません。ブラウザの開発者ツールのネットワークタブで、通信が発生していないことを確認できます。

// JSON差分比較の使い方

  1. 2つのJSONを貼り付け

    左側に比較元(A)、右側に比較先(B)のJSONを貼り付けます。「サンプル」ボタンで、キー順序・型変化・配列の並び替えを含む例を読み込んで動作を確認することもできます。

  2. 配列の比較方法を選ぶ

    要素の順序に意味がある配列は「順番で比較」、APIレスポンスのように順序が保証されない配列は「キーで突き合わせ」を選び、突き合わせに使うフィールド名(`id` など)を指定します。

  3. 差分を確認してコピー

    追加・削除・変更・型変化が色分けで一覧表示されます。「JSON Patch」に切り替えると、AをBに変えるための操作列をRFC 6902形式で取得でき、そのままPATCHリクエストや適用スクリプトに使えます。

カテゴリ データ形式