JSON Diff

结构化比较两个 JSON:字段增删、值修改、类型变化都会指出具体路径,忽略对象键顺序带来的假差异。

原始 JSON
拖拽文件到此处
也可以点击下方按钮选择本地文件
支持 .json / .txt / .csv,最大 10 MB,仅在浏览器本地解析
新 JSON
拖拽文件到此处
也可以点击下方按钮选择本地文件
支持 .json / .txt / .csv,最大 10 MB,仅在浏览器本地解析
比较选项
结果
请输入两份 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,左右两侧都载入后自动开始比较
  • 全部在浏览器本地完成,输入内容不上传服务器
修改接口响应、配置文件或其他 JSON 数据后,可以先用 JSON Diff 定位具体变化,再根据需要继续合并或转换数据。
评论 0
暂无评论,快来发表第一条评论吧
avatar
评论内容不能为空
0/255