JSON 对比
把两份 JSON 分别粘贴到左右两边,点“对比”,按路径列出差异。比较的是数据本身:空白和对象里键的顺序不影响结果。内容只在你的浏览器里处理,不会上传。
使用限制
- 数组按下标逐项比较,不会尝试对齐:如果在数组开头插入了一项,后面每一项都会显示为“修改”。本工具不判断数组元素的“身份”。
- 对象的键顺序被忽略;数字按数值比较(
1、1.0、1e0视为相同),超长数字也精确比较。 null与“键不存在”是不同的:键存在且值为null,另一边没有这个键,会显示为新增或删除。- 同一个对象里有重复的键时,以最后一个为准(与 JSON.parse 一致),并给出提示。
- 只接受标准 JSON,有语法错误时会指出是哪一边、第几行第几列。结果表最多显示 2000 行,差异总数超过 10 万处时会停止计算并提示。
- 超过约 20 万个字符的输入在后台线程里计算,不会卡住页面。
| 路径 | 变化 | 原值 | 新值 |
|---|
使用方法
- 左边粘贴原来的 JSON,右边粘贴新的 JSON。
- 点“对比”。结果表里的路径以
$表示根:$.a是对象的键 a,$.b[1]是数组 b 的第 2 项(下标从 0 开始)。 - “修改”表示两边都有但值不同;“新增”表示只在右边有;“删除”表示只在左边有;“类型变化”表示类型不同,例如数字
1变成字符串"1"。 - 想复制结果,点“复制差异列表”,得到用制表符分隔的文本,可以粘贴进表格软件。
常见问题
两份 JSON 只是键顺序不同,算不同吗?
不算。JSON 对象本来就是无序的,本工具按键名配对比较,所以只调换了顺序会显示“完全相同”。
为什么数组里插入一项会出现很多差异?
因为数组是有顺序的,本工具按位置比较。如果你的数组是“集合”(顺序无意义),可以先在“JSON 格式化”里整理后再对比。
我的数据会被上传吗?
不会,比较在你的浏览器里完成。