無料オンラインツール

JSON diff|2つのJSONを比較して差分を表示

このツールの入力データはブラウザ内で処理します

2つのJSONを比較して、追加・削除・変更された項目をパスごとに表示する無料のJSON diffツールです。キーの順番の違いは無視し、配列はidなどのキーで対応させてJSONの差分を比べられます。差分のCSV・JSON Patch出力にも対応しています。

2つのJSONを比較(JSON diff)

比較したい2つのJSONを貼り付けるか、ファイルを選んでください。キーの順番の違いは無視して、項目ごとの差分を表示します。JSONはサーバーへ送信せず、ブラウザ内で比較します。

変更前(比較元)のJSON

変更後(比較先)のJSON

比較の設定(配列の比べ方・除外する項目など)
配列の比べ方

名前だけ書くと、どの階層にあっても除外します。「items[*].price」のように書くと、その位置だけを除外します(* は任意のキー、[*] は任意の要素)。

値の比べ方

JSON diffの使い方

  1. 「変更前(比較元)のJSON」と「変更後(比較先)のJSON」に、比較したいJSONを貼り付けるか、[ファイルを選択]でJSONファイルを読み込みます。
  2. 必要に応じて「比較の設定」で、配列の比べ方や、比較から除外する項目を指定します。
  3. [JSONを比較]を押すと、JSONの差分が「差分の一覧」に表示されます。小さいJSONは入力するたびに自動で比較します。
  4. 「左右に並べて表示」で、変更前と変更後のJSONを並べて確認できます。結果はコピーやCSV、JSON Patchで書き出せます。

[サンプルで試す]を押すと、キーの順番や配列の順番が違うJSONを比較する例を確認できます。

JSONの比較で表示される差分の種類

種類意味例
追加変更後のJSONにだけある項目user.phone が増えた
削除変更前のJSONにだけある項目user.email がなくなった
変更同じ位置にあり、値が違う項目version が "1.2.0" → "1.3.0"
型の変更値の種類(文字列・数値・配列など)が違う項目price が 80(数値)→ "80"(文字列)

差分の位置は user.address.city や items[0].price のようなパスで表示します。配列をキーで対応させた場合は、items[id=3].price のように、どの要素の差分かが分かる形で表示します。

テキストの差分とJSON diffの違い

一般的なテキストの比較(diff)では、行ごとに文字を比べるため、キーの順番が入れ替わっただけでも多くの行が「違う」と表示されます。改行やインデントの付け方が違うだけのJSONも、別物として扱われます。

このツールはJSONを構造として読み取ってから比較するため、キーの順番や空白・改行の違いは差分になりません。実際に値が変わった項目だけを、パスと変更前・変更後の値で一覧にできます。「左右に並べて表示」でも、両方のJSONを同じ形に整形し、キーの順番をそろえてから比べます。

配列を含むJSONの差分を正しく比べる

配列の要素の順番が変わると、位置で比べたときにすべての要素が「変更」に見えることがあります。目的に合わせて比べ方を選んでください。

  • 位置(順番)で比べる:1番目どうし、2番目どうしを比較します。順番に意味がある配列に使います。
  • キーで要素を対応させて比べる:id などのキーが同じ要素どうしを比較します。順番が変わっても、本当に変わった値だけが差分になります。キー名は「id, code」のように複数指定でき、要素がすべて持っている最初のキーを使います。キーがない要素や、値が重複する要素がある配列は、位置で比べて知らせます。
  • 順番を無視して比べる:同じ値があるかどうかだけを比べ、増えた値と減った値を表示します。タグやIDの一覧などに使います。

比較から除外する項目の書き方

書き方除外する項目
updatedAtどの階層にあっても、updatedAt という名前の項目
$.updatedAt一番上の階層の updatedAt だけ
items[*].updatedAtitems の各要素の updatedAt
meta.*meta の中のすべての項目

日時、リクエストID、トークンなど、比較のたびに変わる項目を除外すると、本当に確認したいJSONの差分だけを見られます。

大きな整数や重複したキーの扱い

JavaScriptでは、16桁を超えるような大きな整数を数値として正確に扱えません。一般的なツールでは 12345678901234567890 と 12345678901234567891 が同じ値に見えることがありますが、このJSON diffは元の数字の並びのまま比較するため、違いを見落としません。1.0 と 1 のような書き方の違いは、初期設定では同じ値として扱います。

同じオブジェクトの中に同じキーが2回ある場合は、場所を表示して知らせます。比較には、一般的なJSONの読み込みと同じく後の値を使います。

利用上の注意

  • 読み込めるファイルは50MBまでです。2MBを超えるファイルは、入力欄には表示せずに比較します。ファイルはUTF-8で保存されたものを使ってください。
  • 差分の一覧は先頭1,000件まで画面に表示します。それより多い場合は、CSVですべて確認できます(10万件まで)。
  • 左右に並べた表示は、行数や違いが多すぎる場合は省略します。除外した項目も、左右に並べた表示には表示されます。
  • JSON Patchは、配列を位置で比べて作ります。除外した項目はJSON Patchに含めません。

よくある質問

JSONを比較するとき、キーの順番が違っても大丈夫ですか?

大丈夫です。このJSON diffはJSONを構造として読み取って比較するため、{"a":1,"b":2} と {"b":2,"a":1} は同じ内容として扱います。改行やインデントなど、書き方の違いも差分になりません。

配列の順番だけが違う場合も差分になりますか?

初期設定では配列を位置(順番)で比べるため、順番が違うと差分になります。「キーで要素を対応させて比べる」でidなどのキー名を指定すると、順番が違っても同じidの要素どうしを比較します。タグの一覧のような単純な値の配列は、「順番を無視して比べる」が便利です。

毎回変わる日時などを差分から除外できますか?

できます。「比較から除外する項目」に updatedAt のように名前を書くと、どの階層にあってもその項目を除外します。items[*].updatedAt のように書くと、その位置だけを除外します。

JSONの差分をファイルで保存できますか?

差分の一覧はCSVでダウンロードでき、Excelでも開けます。変更前のJSONを変更後に変える手順は、JSON Patch(RFC 6902)形式でダウンロードできます。[差分をコピー]では、テキストとしてコピーできます。

JSON Lines(NDJSON)も比較できますか?

できます。1行に1つのJSONが書かれたテキストを貼り付けると自動で判定し、1行目どうし、2行目どうしのように比較します。キーで対応させる設定を使うと、行の順番が違っていても比較できます。

APIのレスポンスなど、公開したくないJSONを比較しても安全ですか?

JSONの読み込みと比較はすべてブラウザ内で行い、サーバーへ送信しません。比較が終わったら、ページを閉じれば入力した内容は残りません。

10〜3,000文字0 / 3,000

必要に応じて確認のご連絡を差し上げる場合があります。

入力内容はフィードバック送信のためにのみ使用します。ファイルの添付やページ内容の自動送信は行いません。