JSON.CN让代码更轻

JSON 对比

正在准备交互工具…

正在加载

JSON 对比

递归对比对象和数组,定位每一处变化。

递归比较两份 JSON 的结构和值,列出新增、删除与修改路径,适合核对接口返回或配置变化。

输入与结果示例

左:{"count":1,"remark":null}
右:{"count":"1"}
差异:count 类型改变;remark 被删除。

使用范围与注意事项

  • 对象键顺序不影响结果;数字 1 与字符串 "1" 视为不同。
  • 数组按下标比较,尚不支持按业务 ID 匹配;插入一个元素可能产生多处差异。
  • 路径采用 JSON Pointer:~ 写作 ~0,/ 写作 ~1。

常见问题

字段缺失与 null 相同吗?

不同。缺失代表属性不存在,null 是明确存在的值;比较时分别报告。

JSON 对比:读懂每一处字段变化

左侧放原数据,右侧放修改后的数据。点击示例按钮会替换两份输入,结果按 JSON Pointer 路径显示;复制或下载得到结构化差异数组。

可运行示例与预期结果

新增与删除字段

输入 A

{
  "name": "示例",
  "old": true
}

输入 B

{
  "name": "示例",
  "active": true
}

预期 2 处差异:删除 /old,新增 /active。

数字与字符串

输入 A

{
  "count": 1
}

输入 B

{
  "count": "1"
}

预期 /count 从数字 1 修改为字符串 "1",类型不同也算差异。

数组顺序变化

输入 A

{
  "ids": [
    1,
    2
  ]
}

输入 B

{
  "ids": [
    2,
    1
  ]
}

数组按下标比较,交换顺序会产生 2 处修改;不按业务 ID 配对。

null 与字段缺失

输入 A

{
  "remark": null
}

输入 B

{}

预期删除 /remark:null 是明确存在的值,字段缺失则是属性不存在。

结果与错误排查

新增、删除和修改以哪一边为准?

以左侧输入 A 为原数据,右侧输入 B 为新数据。只在右侧存在是新增,只在左侧存在是删除。交换输入会反转比较方向。

对象字段顺序不同算差异吗?

不算。对象按字段比较,嵌套对象递归检查。数组按下标比较,所以在数组开头插入一个元素可能出现多处差异。

结果中的 /items/0/name 是什么?

这是 JSON Pointer 路径,表示 items 数组第一个元素的 name 字段。字段名中的 ~ 写成 ~0,/ 写成 ~1;结构化结果中的空路径表示根节点。

两个 JSON 一致,是否说明接口没有问题?

一致只表示这两份样本的结构和值相同,不代表接口满足业务合同、性能或权限要求。类型和必填规则可再用 JSON Schema 检查。