JSON DIFF

JSON 对比:两份数据哪里不同,一次就知道。

比较接口版本、配置文件或测试响应,按 JSONPath 显示新增字段、删除字段和变化值。对象字段顺序不同不会造成误报。

在左右两侧输入 JSON 后开始对比。
旧 JSON对比左侧
新 JSON对比右侧
差异结果按路径显示
比较在浏览器本地完成。结果回答的是结构和值是否相同,不判断两个字段在业务上是否等价。

JSON 对比规则是什么?

变化情况结果示例
对象字段顺序不同不算差异{"a":1,"b":2}{"b":2,"a":1} 相同。
对象字段新增或删除显示新增或删除路径$.user.avatar 被加入或移除。
基础值或类型变化显示变化及左右值true 变为 false,或 1 变为 "1"
数组元素顺序变化按下标显示差异交换第 0、1 项会产生对应路径变化。

一个接口版本对比的例子

旧响应

{
  "user": {"active": true},
  "orders": []
}

旧版本没有新的订单字段。

新响应

{
  "user": {"active": false},
  "orders": [{"id": "ORD-003"}]
}

对比结果会显示 $.user.active 的变化和 $.orders[0] 的新增。

对比前先确定你想验证什么

  1. 接口升级时,重点看字段是否删除、类型是否变化、数组元素结构是否变化。
  2. 配置变更时,重点看明确路径的值,不要因为数组顺序变化就误判业务变更。
  3. 如果左右 JSON 不能解析,先用 JSON 校验页修复语法,再进行对比。
页面不支持“忽略某些字段”或“按 ID 匹配数组元素”。需要按业务主键比较数组时,应在项目测试中使用专门的断言逻辑。

常见问题

两份 JSON 字段顺序不同会被判定为差异吗?
不会。对象按字段名递归比较,字段排列顺序变化不会被视为内容变化。
数组顺序变化会显示吗?
会。数组按下标比较,因此元素调换位置会显示为对应下标的变化。这是结构比较,不是按业务 ID 的集合比较。
结果中的路径有什么用?
路径告诉你差异所在层级,例如 $.user.name。可直接回到 JSONPath 页验证该字段,或在代码中定位对应模型。