JSON Diff

对比两个 JSON 文档,查看新增、删除与修改内容的结构化差异——完全在你的浏览器中完成。

两份 JSON 文档都在你的浏览器本地解析和对比,绝不会上传,但请避免将密钥或生产凭据粘贴到任何在线工具中。

需要重新整理结果?试试 JSON 格式化工具。

关于 JSON Diff

JSON Diff 会对比两个 JSON 文档,并展示结构化差异,而非逐行的文本差异。把原始 JSON 粘贴到左侧、修改后的版本粘贴到右侧,它会解析两者并精确报告哪些值被新增、删除、修改,或类型发生了变化——每一项都带有像 user.roles[2] 这样的路径。由于对比是语义化的,重新排列对象键永远不会被视为差异,因此你只会看到真正重要的变化。开启「忽略数组顺序」即可将数组作为集合来对比,或开启「键排序」以在并排视图中归一化两侧。它专为对比 API 响应、配置文件和测试夹具的开发者而打造。一切都在你的浏览器本地运行,因此你粘贴的 JSON 绝不会上传,始终留在你的设备上。

功能特性

如何使用 JSON Diff

  1. 将原始 JSON 粘贴到左侧的「原始」框中。
  2. 将更新后的 JSON 粘贴到右侧的「修改」框中。
  3. 阅读彩色差异:绿色表示新增,红色表示删除,琥珀色表示修改的值。
  4. 如果顺序不应计为差异,可切换「忽略数组顺序」或「键排序」。
  5. 切换到「并排」视图对比两份格式化文档,或复制差异摘要。

示例

输入

// Original
{ "name": "Ada", "roles": ["admin"], "active": 1 }

// Changed
{ "active": "1", "name": "Ada", "roles": ["admin", "editor"] }

输出

+ roles[1]: "editor"
~ active: 1 → "1"   (type changed)

重新排列的键被忽略;新增了一个数组元素,且 active 从数字变成了字符串。

常见错误与故障排除

常见问题

JSON Diff 会忽略对象键的顺序吗?
会。对比是语义化的,因此两个键和值相同的对象无论键顺序如何都视为相等。只有真正的新增、删除和值变化才会被报告,每一项都带有其路径。
JSON Diff 如何处理顺序不同的数组?
默认情况下数组按位置对比,因此重新排列元素会显示为变化。开启「忽略数组顺序」即可将数组作为多重集对比,此时只有真正新增或删除的成员才会被标记。
为什么 1 和 "1" 会显示为不同?
因为它们的 JSON 类型不同——一个是数字,另一个是字符串。JSON Diff 将其标记为类型变化,与普通的值变化区分开来,让你能捕捉到 API 响应中被意外字符串化的数字。
差异中像 user.roles[2] 这样的路径是什么意思?
它指向变化的精确位置:键 user,然后是它的 roles 数组,再到索引为 2 的元素。对象键用点号表示,数组元素用方括号索引表示。
我能对比深度嵌套的 JSON 和嵌套数组吗?
可以。JSON Diff 会递归遍历任意深度的嵌套对象和数组,在每个变化的完整路径上报告它,因此即使是庞大、深度嵌套的负载也能保持可读。
我粘贴到 JSON Diff 的 JSON 会被上传到任何地方吗?
不会。两份文档完全在你的浏览器中解析和对比,因此你粘贴的 JSON——包括任何敏感字段——都留在你的设备上,绝不会发送到服务器。

相关工具

全部 ArrayKit 工具