キー順序を無視した比較
RFC 8259に準拠し、オブジェクトのキー順序が入れ替わっただけの無害な差分を無視して重要な値の変化のみをハイライト。
100% クライアントサイド JSON 比較
2つのJSONオブジェクトを比較し、追加・削除・変更されたプロパティをリアルタイムで特定します。
構造比較エンジン
行単位のdiffツールは、キーの順序が入れ替わったり1行に圧縮されたJSONを正しく比較できません。構文木(AST)を比較して意味のあるデータ変更のみを抽出します。
RFC 8259に準拠し、オブジェクトのキー順序が入れ替わっただけの無害な差分を無視して重要な値の変化のみをハイライト。
何層にもネストされたオブジェクトや配列をたどり、追加・削除・変更されたすべてのプロパティに正確なパスを付与。
インデックス順での厳密比較と、順序不問のマルチセット比較を切り替え可能。順不同のAPIレスポンスも正確に比較できます。
一般的な行単位のテキスト差分ツール(git diff やテキスト比較)でJSONを比較すると、キーの順序やインデントの違いだけで差分と誤判定されてしまうことが多々あります。
当ツールの構造的JSON差分エンジンは、以下の3ステップで本質的なデータの違いを正確に特定します:
公式のJSON仕様(RFC 8259)において、オブジェクトは名前と値の順序のない集合と定義されています。そのため、{"a": 1, "b": 2} と {"b": 2, "a": 1} は意味的に全く同じデータです。
本ツールはデフォルトで「キー順序を無視」が有効になっており、見た目の順序変更によるノイズを除去します。API要件等で厳密な順序比較が必要な場合はチェックを外してください。
オブジェクトのキーとは異なり、JSON配列の要素は順序付けられています。しかしRESTやGraphQL APIでは、タグや権限リストのように順序が任意である配列も多く存在します。
本ツールは「配列の順序を無視」トグルを備えています。有効にすると位置に関係なく値の等価性で要素を照合し、先頭への要素追加による連鎖的な差分誤検知を防ぎます。
比較結果はRFC 6902準拠のJSON Patch形式、またはPull Requestやコードレビューで使いやすいMarkdownチェンジログとしてダウンロードできます。ブラウザ内でのみ実行されるため、機密データも安全です。
テストスイートやCI/CDパイプラインでJSON比較を自動化する場合の標準的なコード例です:
import json
from deepdiff import DeepDiff
# Load JSON files or API responses
with open('original.json') as f1, open('modified.json') as f2:
original_data = json.load(f1)
modified_data = json.load(f2)
# Deep structural diff with key-order independence
differences = DeepDiff(original_data, modified_data, ignore_order=False)
print("Added keys:", differences.get('dictionary_item_added', {}))
print("Removed keys:", differences.get('dictionary_item_removed', {}))
print("Values changed:", differences.get('values_changed', {}))
print("Type changes:", differences.get('type_changes', {}))import fs from 'node:fs';
import { compare } from 'fast-json-patch';
// Read and parse documents locally
const original = JSON.parse(fs.readFileSync('original.json', 'utf8'));
const modified = JSON.parse(fs.readFileSync('modified.json', 'utf8'));
// Generate standard RFC 6902 JSON patch differences
const delta = compare(original, modified);
console.log('Structured differences:', delta);
// Output: [ { op: 'replace', path: '/user/age', value: 26 }, ... ]UnixやmacOSのターミナルでは、diffを実行する前に jq -S でキー順序をソートします:
# Sort keys alphabetically with jq, then run unified diff
diff -u <(jq -S . original.json) <(jq -S . modified.json)比較前にJSONを整理したい場合は、当サイトの JSON 整形ツール、構文エラーを検出する JSON バリデータ、表形式に変換する JSON to CSV 変換ツール.
FAQ
テキスト比較(行単位)と異なり、JSONの構文木(AST)を比較します。キーの順序の違いやインデントの違いによる偽の差分を排除し、実際のデータ変更のみを検出します。
はい、デフォルトでキー順序は無視されます。RFC 8259仕様上、{"a":1,"b":2} と {"b":2,"a":1} は同一データとみなされます。
はい。「配列の順序を無視」オプションを有効にすると、順不同のAPIレスポンスでも要素の一致を正しく判定できます。
いいえ、一切ありません。変換処理はすべてこのブラウザ内のWeb Workerでローカルに実行されるため、ファイルが外部へ送信されることはありません。ブラウザの開発者ツールの「ネットワーク」タブを開いて変換を実行すれば、リクエストが一切発生しないことをご確認いただけます。そのため、容量制限や1日の利用上限もありません。
制限はありません。データは分割(チャンク)して読み込まれ、ストリーミング形式で書き出されるため、ファイルサイズが大きくなってもメモリ消費は一定に保たれます。実質的な上限はお手元のマシンの性能次第で、メガバイト単位ではなくギガバイト単位の大容量データも扱えます。
完全に無料で、アカウント登録も試用期間も有料プランもありません。どなたでもすべての機能を無制限でご利用いただけます。