JSON对比
深度对比两段JSON的结构差异
这个工具能做什么
把改动前后的两段 JSON 分别粘进上下输入框,点对比就能看到它们的结构差异,这就是 json对比 最直接的用途。日常开发里,接口返回动辄几十上百行,想知道两次响应到底哪个字段变了、少了哪个键,靠肉眼一行行扫既慢又容易漏。更麻烦的是,如果直接拿文本 diff 去比,字段顺序不同、缩进空格不一致都会被标成差异,真正的改动反而淹没在噪声里。这个工具从结构层面做 json比较,只告诉你键和值层面真正的变化。
它的工作方式是把两个 JSON 解析后做深度递归遍历:对象按键名逐个匹配,数组按下标一一对应,遇到嵌套的对象或数组继续往里递归。比较结果被归成三类——右侧有而左侧没有的算新增键,左侧有而右侧没有的算删除键,同一路径下值不相等的算值改变。每一处差异都用一条键路径定位,点号表示进入对象的下一层,方括号表示数组下标,例如 a.b[0] 指的就是 a 对象里 b 数组的第一个元素。因为比较基于解析后的结构而不是原始文本行,所以键的书写顺序、缩进和换行都不影响 json差异 的判定。
最常见的用法是核对接口:把某个字段改动上线前后的两份响应贴进来,一眼就能看出是新增了 data.list[3].status,还是某个金额字段的值从 100 变成了 120,省去逐行对照的功夫。配置管理里也很实用,比如对比测试环境和生产环境的 config.json,快速发现两边哪几个开关不一致、哪个超时时间被改过。此外还适合比对数据快照,像定时任务前后落库的同一条记录、缓存刷新前后的同一份数据,用 json diff 精确锁定被改动的字段。
有两点需要留意。其一,数组是按下标位置对齐比较的,如果你在数组中间插入或删除了一个元素,后面所有元素的索引都会顺移,结果里就会出现一大片“值改变”,这是按位置比对的固有特性而非算错,遇到时按整体位移来理解即可。其二,输入必须是合法的标准 JSON,带注释、尾逗号的 JSON5/JSONC 会解析失败,需先清理成标准格式再来对比json;另外超过 2 的 53 次方的超大整数受 JavaScript 双精度浮点限制可能丢失精度,对这类字段的比较结果要多留个心眼。全程在浏览器本地完成,数据不会上传。
JSON对比是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json对比”、“json比较”、“json差异”,说的都是这个。
常见使用场景
- 核对接口改动前后的返回字段变化
- 比较测试与生产环境的配置文件差异
- 对比数据快照定位被修改的字段
- 排查两次 API 响应结果为何不同
- 校验序列化前后 JSON 是否一致
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。