JSON比較ツール|2つのJSONの差分をキーの順番を無視してパスで一覧表示
2つのJSONを値で比べ、追加・削除・変更・型の変化をパスつきで一覧にします。配列はキー(id など)で突き合わせでき、大きな整数の桁や重複キーも見落としません。
詳細設定(配列の比べ方)
全要素がオブジェクトで、このキーの値が文字列か数値で重複しない配列だけを突き合わせます。 それ以外の配列は位置で比べ、結果の通知に理由を出します。
2 つの JSON を貼り付けて「比較する」を押してください
追加・削除・変更・型の変化が、パスつきの一覧で表示されます
このツールについて
使い方・特徴・補足情報
JSON比較とは
JSON比較は、2 つの JSON を値で比べて、違う所だけをパスつきで並べるツールです。 キーの順番・字下げ・改行の違いは差分に数えません。
結果は「追加・削除・変更・型の変化」の 4 種類に分けて出ます。
$.users[0].name のようなパスで、どこが違うかをそのまま探せます。
配列は、位置で比べるか、id などのキーで要素を突き合わせるかを選べます。
並びが変わっただけの一覧で、変更だらけになるのを防ぎます。
大きな整数の最後の桁の違いや、同じキーが 2 回ある JSON も知らせます。 どちらも JSON.parse で読むと見えなくなることがある差です。
こんな人におすすめ
API や設定ファイルを扱う開発者
楽になること
2 つの JSON の違いを探す作業
避けたい手間
並びの違いに埋もれて本物の差を見落とすこと
解決できる困りごと
- キーの順番や字下げが違うだけの JSON を行で比べて、差分だらけになる手間が減ります
- 一覧の並びが変わった API レスポンスで、1 件の挿入が後ろ全部の変更に見える混乱を避けられます
- 数値の 1 と文字列の "1"、null とキーの欠落を取り違えたまま見過ごすのを防げます
- JSON.parse で読むと同じになる大きな ID の違いを、差分なしと思い込むのを防げます
- 全角スペースや濁点の分解のように、見た目では分からない文字列の違いを探す時間が減ります
使い方
- 変更前の JSON を左の欄に、変更後の JSON を右の欄に貼り付けます
- 配列の並びが変わる JSON なら、詳細設定で配列の比べ方を選びます
- 「比較する」を押し、上の件数で追加・削除・変更・型の変化の数を確かめます
- 一覧のパスと値を読み、必要ならコピーボタンで結果をテキストにします
- 通知欄で、書き方だけ違う数値や重複キーが無いかを見ます
使用例
キーの順番だけが違う 2 つの JSON
並びと字下げは差分に数えません。値が同じなら「値の違いはありません」と出ます。
入力
左: {"name":"佐藤","age":30}
右: {
"age": 30,
"name": "佐藤"
}
出力
追加 0 / 削除 0 / 変更 0 / 型の変化 0
値の違いはありません。キーの順番・空白・改行の違いは比べていません。
項目の追加と型の変化
数値の 30 が文字列の "30" になった所は「型の変化」として分けて出ます。
入力
左: {"id":1,"age":30}
右: {"id":1,"age":"30","email":"a@example.com"}
出力
[型の変化] $.age: 30(数値) → "30"(文字列)
[追加] $.email: "a@example.com"
並び替わった配列を id で突き合わせる
位置で比べると 2 件とも変更に見えますが、id で突き合わせると本当の変更 1 件だけが残ります。
入力
左: [{"id":1,"name":"A"},{"id":2,"name":"B"}]
右: [{"id":2,"name":"B2"},{"id":1,"name":"A"}]
配列の比べ方: キー「id」で突き合わせる
出力
[変更] $[id=2].name: "B" → "B2"
JSON.parse だと同じになる大きな ID
20 桁の ID は倍精度に丸めると同じ値になります。字面の 10 進数で比べるので差分として残ります。
入力
左: {"id":12345678901234567890}
右: {"id":12345678901234567891}
出力
[変更] $.id: 12345678901234567890 → 12345678901234567891
JSON.parse で読むと同じ値になる差です
活用シーン
API の改修前後でレスポンスを比べる
改修前と改修後のレスポンスを貼ります。増えた項目・消えた項目・型が変わった項目がパスで並びます。
本番と検証の設定ファイルを見比べる
キーの並び順が違う 2 つの設定でも、値が違う所だけが出ます。字下げをそろえ直す必要はありません。
並び順が変わる一覧データを確かめる
配列を id で突き合わせると、並びが変わっても同じ要素どうしで比べます。本当に変わった件だけが残ります。
テストの期待値と実際の出力を比べる
失敗したテストの期待値と出力を左右に貼ります。長い JSON のどこで食い違ったかを 1 行で示します。
データ移行の前後で中身を点検する
移行前後の JSON を比べ、大きな ID の桁や文字列の表記が変わっていないかを確かめます。
技術的な解説
補足: 仕組み
読み取りは JSON.parse を使わず、RFC 8259 の文法どおりに自前で行います。 数値の字面と、重複したキーを失わないためです。
数値は 1.0 を 1e0 のような 10 進の正規形にそろえて比べます。
値が同じで書き方だけ違う数値は、差分に数えず通知に回します。
文字列はエスケープを解いてから比べます。
空白の種類など見分けにくい違いは、Intl.Segmenter で最初に違う文字を探して示します。
もっと詳しく
配列の比べ方を 3 つから選ぶ理由
位置で比べると、先頭に 1 件挿入しただけで後ろの要素がすべて「変更」になります。 API の一覧のように並びが変わるデータでは、本物の差が埋もれます。
キーで突き合わせると、同じ id の要素どうしを比べます。
順番を無視する方式は、要素を丸ごと数え合わせ、一致しない要素だけを追加・削除に出します。
大きな整数と重複キーは JSON.parse で消える
JSON.parse は数値を倍精度で持つので、2 の 53 乗(約 9 千兆)を超える整数では末尾の違いが消えることがあります。 RFC 8259 も、倍精度の実装どうしで値が確実に一致する整数を、その範囲の内側としています。
同じキーが 2 回ある JSON では、JSON.parse は後の値だけを残します。 本ツールは後の値で比べたうえで、重複があった場所を知らせます。
テキスト比較ツールとの使い分け
行単位のテキスト比較は、キーの順番や字下げが違うだけで差分を出します。 JSON の意味は見ないので、値が同じでも赤と緑で埋まります。
本ツールは値の違いだけを出す代わりに、行の位置は示しません。 書式の変化まで確かめたいときは、テキスト比較と組み合わせてください。
よくある質問
キーの並び順の違いは差分になりますか?
なりません。オブジェクトのキーの順番は比べていません。
差分が 0 件のときも、比べていないもの(キーの順番・空白・改行)を結果の欄に書きます。
null とキーが無い状態は区別されますか?
区別します。{"a":null} と {} を比べると、$.a の削除として出ます。
null から文字列に変わった場合は「型の変化」になります。
1 と 1.0 は違う値として出ますか?
値が同じなので差分には数えません。1e0 や 10E-1 も同じ値として扱います。
書き方だけ違う数値として通知欄に並べるので、表記の揺れは確かめられます。
コメント付きの JSON や末尾のカンマは読めますか?
読めません。標準の JSON だけを読み、コメントや末尾のカンマは理由と行番号つきのエラーにします。
JSON5 などを比べたいときは、先に標準の JSON に直してください。
貼り付けた JSON はどこかに送られますか?
ツールに入力した JSON はブラウザの中だけで比べ、サーバーには送りません。社内 API のレスポンスも手元で確かめられます。
参考・出典
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format — RFC Editor (2026-09-29 閲覧)
本ツールの計算式・判定基準は上記の公的機関・公式情報源を参考にしています。最新の情報は各リンク先をご確認ください。
関連記事
このツールの使い方や活用例をブログでも紹介しています。
関連ツール
同じカテゴリの他のツールも合わせてどうぞ。