JSON Diff
無料オンラインJSON Diffツール。2つのJSONオブジェクトを左右で比較し、追加・削除・変更されたフィールドをハイライト表示します。比較前に自動フォーマットして行単位・文字単位で比較し、追加・削除・変更の数をリアルタイムで集計。テキストビューとセマンティックビューの2つのビューを提供し、API連携、設定ファイルのバージョン比較、自動テストデータのトラブルシューティングに最適です。
無料オンラインJSON Diffツール。2つのJSONオブジェクトを左右で比較し、追加・削除・変更されたフィールドをハイライト表示します。比較前に自動フォーマットして行単位・文字単位で比較し、追加・削除・変更の数をリアルタイムで集計。テキストビューとセマンティックビューの2つのビューを提供し、API連携、設定ファイルのバージョン比較、自動テストデータのトラブルシューティングに最適です。
2つのJSONテキストを左右の入力ボックスにそれぞれ貼り付けると、ツールが自動的にフォーマットしてから行単位・文字単位で詳細に比較します。追加された内容は緑色でハイライト、削除された内容は赤色でハイライトされ、変更された行は新旧の値を同時に表示して変更された文字をハイライトするので、データの差分を瞬時に特定できます。
必要ありません。ツールは比較前に左右両方のJSONを自動的に解析し、統一フォーマット(2スペースインデント)します。そのため、2つのJSONのインデント、スペース、改行が完全に異なっていても、データ内容が一致していれば無意味な差分は発生しません。これにより、空白文字によるノイズが自動的に除外されます。
テキストビューはフォーマット後の行を単位に比較し、各行の追加・削除・変更を視覚的に表示するため、全体の変化をすばやく確認するのに適しています。セマンティックビューはJSONの構造とフィールドに焦点を当てて比較し、どのフィールドが変更されたかをデータの意味レベルで理解するのに役立ちます。2つのビューはワンクリックでいつでも切り替え可能です。
はい。ツールはフォーマット後の内容の順序で比較するため、配列要素の順序が異なると差分として表示されます。内容が一致しているかどうかだけを確認し、順序を気にしない場合は、JSONフォーマットツールの「キー名ソート」機能を使用するか、配列をソートしてから比較することで、順序によるノイズを回避できます。
以下のシナリオに最適です:1) **API連携**:実際のAPIレスポンスと期待されるMockデータの差分を比較;2) **設定管理**:異なる環境(開発/本番)の設定ファイルの差分を比較;3) **自動テスト**:テストアサーションの補助ツールとして、データの不整合をすばやくトラブルシューティング;4) **バージョンアップ**:サードパーティAPIのアップグレード前後のレスポンス構造の変更を比較。
JSONフォーマットは読みにくいJSONを読みやすい階層構造に整理するのに対し、JSON Diffは2つのJSON間の差分を比較します。両者はよく併用されます:本ツールには実際にフォーマット機能が内蔵されており、比較前に両方の内容を自動的に整形するため、差分そのものに集中できます。
はい。ツールは現在の左右両方の内容をURLに圧縮エンコードして、共有可能なリンクを生成する機能をサポートしています。相手がリンクを開くと同じ比較シナリオが表示され、サーバーへのアップロードは不要です。また、コードレビューや問題追跡のために、どちらか一方の内容をワンクリックでコピーすることもできます。
はい。ツールは複数タブでの比較をサポートしており、異なるタブにそれぞれ異なるJSONペアを貼り付けて比較できます。タブ間は互いに干渉しないため、複数のAPIや複数の設定の差分を同時にトラブルシューティングするのに便利です。
はい。下部のステータスバーに追加・削除・変更の3種類の差分の数がリアルタイムで表示され、変更規模を一目で確認できます。2つのJSONが完全に一致している場合は、「完全に一致」というメッセージが表示されます。
いいえ。すべてのフォーマットと差分比較は完全にブラウザのローカルで実行され、データがサーバーにアップロードされることはありません。鍵、トークン、ユーザープライバシーを含むAPIレスポンスを比較する場合も安全で、ページを閉じるとデータは消去されます。
JSON Diffとは、2つのJSONデータの差分を比較し、それらの間で追加・削除・変更されたフィールドを見つけることです。日常の開発では、2つのJSONが「一体どこが違うのか」を知る必要がよくあります:APIのアップグレード前後でレスポンス構造が何に変わったか、2つの環境の設定がどこで異なるか、自動テストの実際の結果と期待される基準がどのフィールドで逸脱しているか。手動で行単位に確認するのは遅く、見落としも発生しやすいため、JSON Diffツールが差分を自動的にハイライトします。
JSONの差分比較には通常2つのアプローチがあります。1つは「テキスト差分」(textual diff):JSONを標準的な複数行テキストにフォーマットした後、Git diffに似た行単位の比較を行い、各行の追加・削除・変更を視覚的に表示します。もう1つは「セマンティック/構造差分」(structural diff):JSONを木構造として解析し、フィールドパス(user.address.cityなど)に沿って値と型を逐一比較し、フィールドの記述順序やインデントなどのレイアウト要因の影響を受けません。本ツールはテキストビューとセマンティックビューの両方を提供し、必要に応じて切り替え可能です。
なぜ比較前にフォーマットするのでしょうか?同じデータでもレイアウトが完全に異なる場合がある(1行 vs 複数行、2スペース vs 4スペース)ため、元のテキストのまま直接比較すると、レイアウトの違いによる「偽の差分」が大量に発生します。本ツールは比較前に両方のJSONを自動的に解析して統一フォーマットすることで、空白文字のノイズを排除し、本当に意味のあるデータの変化だけを表示します。
注意点として、JSON内のオブジェクトのキーの順序はセマンティクス上は重要ではありません({"a":1,"b":2}と{"b":2,"a":1}は等価)が、配列の要素の順序は意味を持ちます([1,2]と[2,1]は異なります)。そのため、配列の内容が一致しているかどうかだけを確認し、順序を気にしない場合は、配列をソートするかキー名をソートしてから比較することで、順序の変化が誤って差分と判定されることを回避できます。
本ツールのすべてのフォーマットと比較はブラウザのローカルで完了し、データがサーバーにアップロードされることはありません。また、文字レベルのハイライト、追加・削除・変更数の集計、マルチタブでの同時比較、URLによる比較シナリオの共有をサポートしており、API連携、設定比較、テストアサーション、コードレビューなどのシナリオに適しています。
2つのJSONを比較する際、差分は通常以下のカテゴリに分類されます。これらを理解すると、変更の性質をすばやく判断するのに役立ちます。
| 差分タイプ | マーク | 説明 |
|---|---|---|
| 追加 (Added) | + 緑色 | 新しいバージョンには存在し、古いバージョンには存在しないフィールドまたは配列要素。 |
| 削除 (Removed) | − 赤色 | 古いバージョンには存在し、新しいバージョンで削除されたフィールドまたは配列要素。 |
| 変更 (Modified) | ~ 黄色 | フィールドは存在するが値が変更されており、新旧の値を同時に表示して変更された文字をハイライトします。 |
| 型変更 | ~ 黄色 | フィールド値の型が変更された場合(数値から文字列、オブジェクトから配列など)で、変更の一種です。 |
| 変更なし | 通常 | 両側で完全に一致している行で、特別なマークは付きません。 |
クリーンで意味のある比較結果を得るために、状況に応じて以下の前処理を事前に行い、偽の差分を回避してください。
| シナリオ | 推奨アクション |
|---|---|
| キーの順序が異なる | キー名でソートしてから比較する(またはセマンティックビューを使用してフィールドレベルで比較)。 |
| 配列の順序を気にしない | 配列を内容でソートしてから比較し、順序の変化が差分と判定されないようにする。 |
| インデント/空白が異なる | 対応不要。本ツールが自動的にフォーマットしてレイアウトを統一します。 |
| 大きな整数IDを含む | 両側とも大きな整数を文字列で転送していることを確認し、精度損失による不一致を回避する。 |
| 片方が無効 | JSON検証/修復ツールで有効なJSONに処理してから比較する。 |
本ツールのすべてのJSONフォーマットと差分比較は完全にお使いのブラウザのローカルで実行され、データがいかなるサーバーにもアップロードされることはなく、リモートに記録またはキャッシュされることもありません。鍵、トークン、ユーザー情報を含むAPIレスポンスを比較する場合も安全で、ページを閉じるか更新するとデータは消去されます。
最も一般的な原因は配列要素の順序が異なること、または文字列内に肉眼では判別しにくい差分があることです(全角/半角スペース、大文字小文字、末尾のスペース、改行コード\r\nと\nなど)。配列またはキー名をソートしてから比較してください。本ツールは自動フォーマット済みのため、通常はインデントと通常の空白による偽の差分は除外できます。
その側の内容が有効なJSONではないことを意味します(引用符の欠落、余分な末尾のカンマ、コメントの含入、括弧の未閉鎖など)。JSON検証/修復ツールで有効なJSONに処理してから、比較に戻ってください。
ほとんどの場合、2つのデータのキーの順序または配列の順序が全体的に異なるため、行単位で位置がずれています。オブジェクトのキー名でソート、配列を内容でソートして統一してから比較するか、セマンティックビューに切り替えてフィールドレベルで実際に変更されたフィールドを確認することをお勧めします。
JSONの数値はIEEE 754倍精度で解析されるため、2^53を超える大きな整数(スノーフレークID、注文番号)は精度が失われ、両側が見た目は同じでも実際には異なる値として解析されることがあります。大きな整数を転送する場合は、"id": "9007199254740993"のように文字列で囲んでください。
片方がエスケープ表記(\u4e2d\u6587)で、もう片方が平文の中国語の場合、フォーマット後に異なって表示されることがあります。両者はセマンティクス的には同じですがテキストが異なるため差分としてマークされます。生成側でエスケープするかどうかを統一してください(Pythonのensure_ascii=Falseなど)。