编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 其他工具 / JSON对比

JSON对比

深度对比两段JSON的结构差异

JSON A(原)
JSON B(新)
结果

这个工具能做什么

把改动前后的两段 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差异”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

两段 JSON 字段顺序不一样,会被判成差异吗?
不会。工具解析后按键名匹配对象成员,不看键在文本里的先后顺序,所以只调整字段顺序、改动缩进或换行都不会产生差异。
数组中间插入了一个元素,为什么后面的元素全被标成改变了?
因为数组是按下标位置逐一对应比较的。中间插入会让后续元素索引整体后移,同一下标上的值不再相等,从而被判为值改变,这是按位置比对的正常表现。
支持带注释或尾逗号的 JSON(JSON5/JSONC)吗?
不支持,需要是符合规范的标准 JSON。若含有 // 注释、尾逗号或单引号字符串会解析失败,请先清理成合法 JSON 再来对比。
它和普通文本 diff、代码 diff 工具有什么区别?
文本 diff 逐行比较字符,格式或顺序变化都会算差异;本工具比较的是解析后的键值结构,只报告新增键、删除键和值改变,不受空白与字段顺序干扰,更适合 json比较。
贴进去的 JSON 会被上传到服务器吗?
不会。解析和对比全部在你的浏览器本地用 JavaScript 完成,数据不发送到任何服务器,核对内部接口或敏感配置时也放心。

相关工具

查看全部「其他工具」工具 →