JSON 差异对比工具

对比两份 JSON,并高亮显示新增、删除和修改的键路径。

正在加载工具…

JSON 差异对比工具并排粘贴两份 JSON,本工具会进行逐键的结构化对比,而不是简单的逐行文本对比,因此调整键顺序或空白都不会产生误判。每处差异都会按其精确路径(例如 user.name 或 items[0])列出,并标记为新增、删除或修改。所有解析和对比都完全在你的浏览器中完成,数据绝不会离开你的设备。

JSON 差异对比工具 是什么?

JSON Diff 是一款免费的浏览器内工具,用于找出两个 JSON 值之间的语义差异。它不是逐行对比文本,而是遍历两棵树,按名称匹配键、按索引匹配数组元素,并用 config.server.port 或 list[2] 这样的点路径报告每处变化。后端和 API 开发者用它来精确查看两次 API 响应、配置文件或测试数据之间的变化,测试工程师和数据分析师则用它来确认某次转换或迁移是否产出了预期结果。可选择符号样式以 + / - / ~ 行阅读差异,或选择文字样式将其标记为新增、删除和修改。交换按钮会调换左右两侧的输入,便于从任一方向查看差异。

如何使用 JSON 差异对比工具

  1. 将原始 JSON 粘贴到左侧(原始)框中。
  2. 将要对比的 JSON 粘贴到右侧(修改后)框中。
  3. 在结果区查看差异,每一行都显示发生变化的路径和值。
  4. 用样式设置在 + / - / ~ 符号与新增 / 删除 / 修改文字之间切换。
  5. 点击交换可调换两侧,点击复制可获取完整差异报告。

示例

单个值发生变化

输入

左: {"name":"Ada","age":30}
右: {"name":"Ada","age":31}

输出

~ age: 30 -> 31

新增一个键并删除一个键

输入

左: {"a":1,"b":2}
右: {"a":1,"c":3}

输出

- b: 2
+ c: 3

调换键顺序视为相同

输入

左: {"x":1,"y":2}
右: {"y":2,"x":1}

输出

无差异——两份文档相同。

常见问题

我的 JSON 会被发送到服务器吗?
不会。两份文档都使用在你设备上运行的深度对比算法在浏览器中完成解析与比较。没有任何内容被上传,工具也能离线使用。
它与普通文本对比有何不同?
文本对比按行比较,所以重新格式化或调整键顺序看起来都像变化。本工具比较的是解析后的结构,按名称匹配对象的键、按位置匹配数组元素,因此只报告真正的语义差异。
键的顺序重要吗?
不重要。两个键和值都相同的对象会被视为相等,与键出现的顺序无关。但数组元素是按索引比较的,因此调换数组顺序会被算作变化。
每一行是什么含义?
新增路径只存在于右侧,删除路径只存在于左侧,修改路径在两侧的值不同。符号样式中分别显示为 +、- 和 ~;文字样式中则以文字写出。
如果我的 JSON 无效会怎样?
如果任意一侧解析失败,错误提示会告诉你哪一侧(左或右)无效,方便你修正。两侧都能正确解析后,差异会自动更新。

相关工具