JSON Diff 在线对比

本地处理
app.diff.view

也可通过 #data={"name":"Ada"}#url=... 灌入数据,读完即从地址栏清除。

左右两栏贴两份 JSON,按结构对比字段是新增、删除还是值变化。比纯文本 Diff 更适合接口升级、配置变更这类「结构相同但值不同」的场景。发布前把 v1 / v2 样例响应贴进来,比在 Git 里对压缩单行做 diff 更不容易漏嵌套字段。

语义对比

关注路径上的差异,而不是某一行空格有没有对齐。两边缩进不同、键顺序不同时,结构化对比通常比文本 Diff 噪音更少。

结果里会标出新增、修改、删除,并可筛选只看某一类变化。

适合审查变更

看清哪些 Key 变了,再决定要不要改客户端。类型从数字变成字符串、字段被删掉,都比肉眼扫 500 行可靠。

测试同学也可以拿 baseline 和当前响应做回归抽查。

对比前可先排序

Key 顺序不稳定时,可先用排序工具再贴进来。数组若只是集合而无顺序约定,顺序变化可能是假阳性,需结合业务判断。

敏感字段建议先脱敏再对比,即使本页不上传数据。

示例

左侧 A
{
  "name": "Alice",
  "age": 30,
  "tags": ["dev", "json"]
}
右侧 B(相对 A 的变化)
{
  "name": "Alice",
  "age": 31,
  "tags": ["dev", "tools"],
  "active": true
}
数组顺序算差异吗?

会按位置比较。两个列表只是元素顺序不同,也会标出来。

很大的文件怎么办?

对比发生在你这台电脑上。体积很大时先用 JSONPath 抽出相关片段再比。

完全相同会显示什么?

会提示两份 JSON 完全相同,没有高亮差异项。

null 和缺字段一样吗?

不一样。一边是 null 、一边没有这个键,会分别标记,语义也不同。

推荐工作流

  1. 准备旧版(A)和新版(B)样例,必要时先分别格式化。
  2. 点「执行对比」,按新增 / 修改 / 删除筛选。
  3. 把需要写进 CHANGELOG 或测试断言的路径记下来。
  4. 若只是键顺序不同,先到排序页处理两侧再比一次。

Diff 看「两份数据差在哪」;Schema 看「是否符合约定」。接口升级建议两样都做。