跳转到主要内容
CuteJSON
↑↓ 导航 Enter 选择 Esc 关闭

如何排序JSON键以获得干净的差异

发布 1 分钟阅读 作者 Akash Kinkar Pandey

两个包含相同数据但键顺序不同的文档,用纯文本差异比较是不可能的。 手写配置和程序编写的配置几乎永远不会在顺序上达成一致,以相同方式 排序两者是使它们重新可比较的方法。

使用JSON键排序器

选择顺序,A到Z或Z到A,缩进宽度,然后按排序键。只有对象键会 移动。数组保持原样,因为数组的顺序是其包含数据的一部分,而不是 输入方式的意外,悄悄重新排序数组的工具会更改文档的含义,同时声称 只是整理它。

排序

{"item10":"a","item2":"b","Zebra":"c","apple":"d","list":[3,1,2]}

默认情况下按精确字符代码顺序返回键:Zebra在apple之前 (大写字母排在小写字母之前),item10在item2之前 ("1"是比"2"小的字符)。数组[3, 1, 2]完全未被触及。

“数字按顺序”选项

字符代码顺序是item10排在item2之前的原因:比较一次查看一个 字符,永远不会注意到10比2大。启用“数字按顺序”会将数字序列读作 数字,因此item2正确地排在item10之前。这在工具中明确编写, 而不是交给浏览器的区域感知比较,因为遵循页面语言的比较会在 印地语页面上与英语页面上以不同方式排序同一文件,整理文档的 工具必须无论谁使用都给出相同的答案。

重复键

具有重复键的文档在排序后保留两个副本,并排放置。此工具不会像 基于JSON.parse的方法那样默默保留最后一个来决定哪个“正确”; 它排序现有的内容,将关于重复键的决定留给您,或交给 JSON验证器,它会将其标记为警告。

为什么排序不会更改您的数据

无论是否排序,值、它们的类型和精确文本都是相同的。这是显示和 比较的便利,不是文档含义的转换,这就是为什么在 JSON差异工具中比较之前排序文档是安全的, 无需担心排序本身引入了差异。

返回所有文章