Structural JSON diff
Compare nested JSON values by keys and array positions without rounding large identifiers.
A clear answer. Here’s how.
Recursively compares object members without regard to key order and arrays by index. Reports added, removed or changed values using escaped JSON Pointer paths. Numeric equality normalises decimal coefficients/exponents without converting them to floating point, so 1 and 1.0 compare equal while distinct large integers remain different. Limited to 10,000 reported changes. This is an index-based structural diff, not an optimal array edit script.
See a worked example
Worked example
A fixed demonstration, separate from the values you enter above.
- Original JSON
- {"name":"Ada","items":[{"id":9007199254740993,"active":true},{"id":2,"active":false}],"settings":{"theme":"blue"}}
- Updated JSON
- {"name":"Ada","items":[{"id":9007199254740993,"active":false}],"settings":{"theme":"violet"}}
Example result
| Change | JSON Pointer | Before | After |
|---|---|---|---|
| Changed | /items/0/active | true | false |
| Removed | /items/1 | {"id":2,"active":false} | |
| Changed | /settings/theme | "blue" | "violet" |
Object member order is ignored; arrays compare by index. Numerically equivalent decimal spellings compare equal without losing integer precision.