比较 JSON,忽略键顺序的干扰
重新排序的键可能隐藏单个值的变化。比较数据时保持数组顺序有意义。
两份 JSON 响应的数据可能一样,只是导出时键的顺序不同,看起来就差了很多。先格式化两边的内容,再忽略对象键顺序,就更容易找出真正改动的值。
在 文本与 JSON 比较 中,选择 JSON,将第一个响应粘贴到 原始,第二个响应粘贴到 已更新,然后保持 忽略对象键顺序 开启。比较会自动更新。
消除键顺序干扰
试试这两个版本:
{"name":"Launch","settings":{"public":true,"retries":3},"steps":["draft","review","publish"]}
{"steps":["draft","review","publish"],"settings":{"retries":3,"public":true},"name":"Launch"}
键在顶层和 settings 内部都发生了移动。开启该选项后,结果是 无差异。关闭它,这些移动就会再次可见。无论是否开启此选项,JSON 模式都会格式化两边的内容,因此缩进不同不会被标为差异。
你可以下载 原始文件、重排响应 和 规范化版本。键排序会影响比较显示;它不会覆盖你粘贴的内容。
保持数组的原始顺序
对象是命名值的集合;数组是有序的序列。这种区别是 JSON 规范 的一部分。
将 已更新 中的数组替换为:
["review","draft","publish"]
工具现在会显示 更改,即使忽略对象键顺序也是如此。将 review 移到 draft 之前对这个工作流来说是一个有意义的更改。数组重排响应 让你无需编辑更大的示例即可尝试。
不要仅仅为了消除差异而对数组排序,除非你的应用程序明确将其视为无序集合。显示顺序、优先级和处理顺序可能依赖于它。
接下来查找更改的值
将 值更改响应 加载到 已更新 中。它的键已重排,但也将 retries 从 3 改为 4。在消除键顺序干扰后,剩余的差异就是那个设置。
当屏幕空间足够时,使用 并排。内联 将删除和添加的行保留在一列中,通常在手机上更容易阅读。减号和加号标记有助于区分更改,而不必仅依赖颜色。
排序不会移除字符串内的空格。像 "Launch " 这样的值仍然与 "Launch" 不同。
了解这里的“无差异”含义
这是格式化文本比较,不是 JSON 等价性的通用测试。它保留数字写法和字符串转义:1 和 1.0 仍然不同,"a" 和 "\u0061" 也是如此,尽管许多应用程序将每对解释为相同的值。
重复键会停止 JSON 比较,而不是静默丢弃一个值。使用 JSON 格式化器 定位并解决它们,然后再进行比较。原始 或 已更新 旁边的错误会指出哪个输入需要处理。
在 2026 年 10 月 12 日,我们使用工具所用的相同 JSON 解析器和格式化器检查了示例:开启排序时,重排的键匹配;数组顺序、值、数字写法或转义写法改变后,仍会显示差异。结果文件 记录了所有六次比较和文件哈希。