gpt4 book ai didi

json - 使用 jq 或替代命令行工具比较 JSON 文件

转载 作者:IT老高 更新时间:2023-10-28 12:44:48 26 4
gpt4 key购买 nike

是否有任何命令行实用程序可用于查找两个 JSON 文件是否相同,并且对内字典键和内列表元素排序具有不变性?

这可以通过 jq 来完成吗?或其他等效工具?

示例:

这两个 JSON 文件完全相同

A:

{
"People": ["John", "Bryan"],
"City": "Boston",
"State": "MA"
}

B:

{
"People": ["Bryan", "John"],
"State": "MA",
"City": "Boston"
}

但这两个 JSON 文件是不同的:

A:

{
"People": ["John", "Bryan", "Carla"],
"City": "Boston",
"State": "MA"
}

C:

{
"People": ["Bryan", "John"],
"State": "MA",
"City": "Boston"
}

那就是:

$ some_diff_command A.json B.json

$ some_diff_command A.json C.json
The files are not structurally identical

最佳答案

如果您的 shell 支持进程替换(以下是 Bash 样式,请参阅 docs):

diff <(jq --sort-keys . A.json) <(jq --sort-keys . B.json)

对象的键顺序将被忽略,但数组顺序仍然很重要。如果需要,可以通过以其他方式对数组值进行排序或使它们类似于集合(例如 ["foo", "bar"]{ "foo": null, "bar": null};这也会删除重复的)。

或者,将 diff 替换为其他一些比较器,例如cmpcolordiffvimdiff,取决于您的需要。如果您只想回答是或否,请考虑使用 cmp 并将 --compact-output 传递给 jq 以不格式化输出潜在的小幅性能提升。

关于json - 使用 jq 或替代命令行工具比较 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com