← 返回首页

JSON 比对

对比两个 JSON 数据的差异,支持对象和数组的深度比较。

JSON比对 是什么?

JSON比对工具用来找出两段JSON数据到底哪里不一样。它把两份JSON解析成树结构后逐层递归比较,对象比键、数组比下标,新增、删除、修改的字段分别用不同颜色标出来。调接口时最常见:测试环境返回{"code":0,"data":{"id":1024,"name":"张三"}},生产环境返回{"code":0,"data":{"id":1024,"name":"张三","vip":true}},肉眼扫半天看不出多了个vip字段,粘进来一比对,新增项立刻高亮。改配置、核对埋点参数、排查缓存脏数据也用得上。

使用步骤

  1. 打开页面,左侧文本框粘贴基准JSON,例如{"code":0,"data":{"id":1024,"name":"张三"}}。
  2. 右侧文本框粘贴待比对JSON,例如{"code":0,"data":{"id":1024,"name":"张三","vip":true}}。
  3. 点击“开始比对”,工具会先校验JSON合法性,括号不配对会直接报错行号。
  4. 查看结果区:绿色为新增字段vip,红色为删除字段,黄色为值被修改的字段。
  5. 若数组元素顺序不同,可勾选“忽略数组顺序”,按元素内容匹配而非下标。
  6. 确认差异后点“复制结果”或“清空”,换下一组数据继续比对。

对比:用它还是手工做?

对比维度本工具手工/替代做法
定位差异耗时粘贴即出结果,1万行JSON约0.5-1秒肉眼逐行扫,1万行至少10分钟且易漏
类型差异识别区分1与"1"、true与"true",标为修改肉眼几乎看不出引号差异,常误判为相同
嵌套层级递归比对任意深度,路径逐级展开深层嵌套靠缩进对齐,超过5层极易看错
数组顺序可切换按下标或按内容匹配命令行diff按行比,顺序一变全红
隐私纯本地JS计算,无网络请求在线diff网站需上传,敏感数据有泄露风险

常见问题

两个JSON键顺序不同算差异吗?

不算。JSON对象按RFC 8259定义是无序键值对集合,本工具比较时先对键排序再逐项对比,{"a":1,"b":2}和{"b":2,"a":1}判定为完全相同。只有数组才讲顺序,[1,2]和[2,1]默认算差异,除非勾选忽略数组顺序。

数字1和字符串"1"一样吗?

不一样,会标为修改。JSON里1是Number类型,"1"是String类型,类型不同即视为差异。同理true和"true"、null和"null"都不同。如果接口返回的id有时是数字有时是字符串,比对结果会全部飘红,建议先统一类型再比。

能比对多大的JSON文件?

纯浏览器本地解析,上限取决于设备内存。实测Chrome下10MB左右的JSON(约20万行)解析加比对耗时2-4秒,超过50MB可能触发页面卡顿甚至崩溃。超大文件建议先用命令行jq或Python的json.dumps排序后diff,别硬塞进浏览器。

浮点数0.1+0.2的差异怎么处理?

JSON里0.1和0.2本身是精确存储的十进制字面量,比对按字符解析后的数值严格相等判断。但若一边是0.30000000000000004、一边是0.3,会判定为修改。工具不做epsilon容差,因为容差阈值该设多少没有通用标准,需要容差请自行四舍五入后再比。

数据会上传到服务器吗?

不会。整个解析、递归比对、渲染高亮全部在浏览器里用JavaScript完成,没有fetch上传请求。断网状态下打开页面照样能用。关掉标签页数据即消失,不留缓存。涉及密钥、手机号的JSON也可以放心粘。

数组里对象顺序变了怎么办?

默认按下标逐个比,[{"id":1},{"id":2}]和[{"id":2},{"id":1}]会报两处修改。勾选“忽略数组顺序”后,工具按元素序列化字符串做集合匹配,只报真正增删的元素。注意元素重复时该模式可能匹配错位,重复项多的数组慎用。

适用JSON RFC 8259标准,支持对象、数组、字符串、数字、布尔、null六种类型。比对为严格相等:类型不同即算差异,数字不做浮点容差,字符串区分大小写与空格。超大文件(>50MB)可能卡顿。全部计算在浏览器本地完成,数据不上传、不落盘,关闭页面即清除。

浙ICP备2026073450号