使用步骤
- 在左侧粘贴原始 JSON,右侧粘贴修改后的 JSON。
- 选择数组是否需要考虑顺序。
- 查看新增(+)、删除(−)、修改(~)的列表,也可以复制为文本报告。
参数说明
- 按位置比较
- 数组元素逐个按下标比较。因此在开头插入一项,后面每个位置都会显示为修改。
- 忽略顺序
- 把数组当作无序集合,只报告一边有而另一边没有的元素,适合 ID 列表、标签或记录列表。
- 路径
- 使用 JSONPath 写法:$ 表示根,.key 表示属性,[0] 表示数组元素,["a b"] 表示不是普通名称的键。
示例
看下面两份文档,键的顺序不同,部分值也不同:
{"name": "Ada", "age": 36, "tags": ["x", "y"], "address": {"city": "Rome"}, "first name": "A"}
{"age": 37, "name": "Ada", "tags": ["y", "x"], "address": {"city": "Rome", "zip": "00100"}, "first name": "B", "role": "admin"}
按位置比较,结果如下:
| 变更 | 路径 | 修改前 | 修改后 |
|---|---|---|---|
| ~ | $.age |
36 | 37 |
| ~ | $.tags[0] |
“x” | “y” |
| ~ | $.tags[1] |
“y” | “x” |
| + | $.address.zip |
“00100” | |
| ~ | $["first name"] |
“A” | “B” |
| + | $.role |
“admin” |
打开「忽略顺序」后,两条 tags 的变更会消失,因为两个数组里装的是同样的两个值。两种模式下,键的顺序都没有影响。如果某个值的类型发生变化,例如数字变成字符串,或对象变成数组,则在它自己的路径上报告为一处变更。
常见问题
和文本对比有什么区别?
文本对比按行比较,格式和键顺序的变化都会显示出来。JSON 对比会解析两边的数据,只比较内容本身。
1 和 "1" 算相同吗?
不算。数字和字符串是不同的 JSON 值,会作为修改列出两边的值。
数据会上传吗?
不会,两份 JSON 都在浏览器中比较。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。