JSON Diff
结构化比较两个 JSON:字段增删、值修改、类型变化都会指出具体路径,忽略对象键顺序带来的假差异。
JSON 字段增删、值修改与类型变化一屏看清
JSON Diff 与文本对比有什么区别
JSON Diff 是把两份 JSON 解析成对象后再逐层比较的工具,只报告语义上的结构差异,每条差异给出 JSONPath 路径、变化类型与前后值。
对象键顺序不同不会算差异
普通文本对比会把 {\"a\":1,\"b\":2} 与 {\"b\":2,\"a\":1} 判成两份不同的内容,因为字符顺序不一样;但从 JSON 语义看这两个对象完全相等。JSON Diff 按字段名取值比较,因此键顺序变化不会产生任何差异条目。
能识别的四类差异
新增(B 有而 A 无的字段)、删除(A 有而 B 无的字段)、值修改(同一路径上的值不同)、类型变化(例如数字 18 变成字符串 18)。数组按下标比较元素,嵌套对象与嵌套数组逐层往下比较,差异清单可以用 + / - / ~ / ! 四种前缀复制成纯文本。
结果区怎么看
结果表格四列分别是路径、类型、JSON A 的值与 JSON B 的值:路径用 JSONPath 书写,例如 $.user.name 或 $.list[0].id。下方完整差异 JSON 把每条差异整理成结构化数组,可以直接复制给开发者定位改动点;统计行会给出差异条数与新增、删除、修改、未变化的数量,类型变化单独标注,不与值修改混在一次。
两个比较开关
忽略数组顺序会把数组按集合比较:[1,2] 与 [2,1] 视为相同,适合元素顺序无意义的标签或权限列表;忽略字符串首尾空白则忽略两侧空格与换行造成的假差异,适合格式化程度不一致的两份配置。开关改动后会立刻重新比较,且只影响比较口径,不会改动两侧输入的内容。
怎么比较本地文件
切到上传文件页签,把两份 .json 文件分别拖进左侧与右侧的拖拽区,或点选择文件逐个挑选;文件在浏览器本地用 FileReader 读取,单文件上限 10 MB。左右两侧都载入完成后会自动开始比较,不需要再点按钮,文件内容也不会离开浏览器。
差异常见原因排查
接口字段改名会表现为同一路径上的删除加新增;默认值调整表现为值修改;布尔与字符串混用(true 与字符串 true)会被识别为类型变化;数组顺序调整在未开启忽略数组顺序时会逐条列出。先看路径定位字段、再看类型判断成因,通常几步就能找到改动点。如果两份数据完全相同,结果区会直接提示无差异,而不是给出一张空表格。
JSON Diff 会忽略对象键顺序吗?
JSON Diff 先把两份 JSON 解析成对象再逐层比较,对象键顺序不同不会产生差异条目;真正被报告的是字段新增、删除、值修改与类型变化。
每条差异都带 JSONPath 路径,例如 $.user.name,可以直接对应到接口字段或源码位置。
- 先解析再比较,对象键顺序不同不会判成差异
- 差异分新增、删除、值修改与类型变化四类,每条都带 JSONPath 路径
- 数组可选按集合比较,[1,2] 与 [2,1] 视为相同
- 差异清单可用 + / - / ~ / ! 四种前缀复制成纯文本
- 上传比较时单文件上限 10 MB,左右两侧都载入后自动开始比较
- 全部在浏览器本地完成,输入内容不上传服务器