JSON Diff可以处理什么?
JSON 差异比较先解析两份有效 JSON,再递归比较对象键和数组索引。空格、缩进和对象键的排列不影响结果;数字与字符串属于不同类型,数组顺序会影响结果。
选择结构比较还是逐行比较?
需要检查 API 响应的数据变化时使用结构比较;需要比较代码、注释、空格或具体行的变化时使用文本差异工具。数组元素不会按业务 ID 自动对齐。
如何使用?
- 在“原始 JSON”和“修改后的 JSON”分别粘贴有效文档。
- 点击“转换”,查看以 +、-、~ 开头的路径差异。
- 复制或下载结果;若数组顺序不代表业务含义,可先按稳定键整理顺序再比较。
实际输入输出示例
比较一个字段的值变化
输入
原始:{"version":1}
修改:{"version":2}输出
~ $.version: 1 → 2~ 表示同一路径的值发生修改;仅修改空格不会产生此差异。
常见错误与修复方法
| 现象 | 可能原因 | 修复方法 |
|---|---|---|
| 无法比较,显示语法错误。 | 其中一份输入含尾逗号、未加引号的键或缺失括号。 | 先在 JSON 格式化工具中校验两份文档,再比较。 |
| 数组重新排序后产生多条变化。 | 工具按数组索引比较,不自动识别元素移动。 | 需要忽略顺序时,先使用一致的排序规则整理两份数组。 |
比较范围与限制
数组顺序和数值类型参与比较;对象键顺序不参与。标准 JSON 数值使用 JavaScript Number,大整数标识符应表示为字符串。输入、差异和下载均留在当前标签页。
标准与实现参考
- RFC 8259 — JSON 数据交换格式 (opens in a new tab)定义 JSON 文档、对象、数组和数值的语法。
关于JSON Diff的常见问题
缩进不同会产生差异吗?
不会。两份输入先解析为值,再比较结构。
数组移动会自动识别吗?
不会。元素按索引比较,移动可能显示为多处变化。
数据会上传吗?
不会。JSON 比较完全在当前浏览器进行。
数字 1 和字符串 "1" 一样吗?
不一样。值类型不同也会显示为修改。
更新记录
补充中文操作、可复现差异示例、数组顺序限制和语法错误处理说明;改善处理状态、输入防抖和下载文件类型。