我正在尝试使用 QueryJSON 插件与 WinMerge 比较两个长 json 文件。 这些文件中的属性按随机顺序排列。 .\jq 的参数确实有效,但嵌套对象不受影响:
QueryJSON ". | to_entries | sort_by(.key) | from_entries"
有一些“展平”命令没有提供我搜索的结果(可能使用不正确)。
Jsons 可以是例如:
{
"Id": 1,
"Addresses":[
{"Street": "Street 1",
"PostalCode": 12345},
{"Street": "Street 2",
"PostalCode": 12345}
],
"Person":{
"FirstName": "Mike",
"LastName":"Boe"
}
}
{
"Id": 2,
"Person":{
"FirstName": "John",
"LastName":"Boe"
}
"Addresses":[
{"Street": "Street 3",
"PostalCode": 12345},
{"Street": "Street 2",
"PostalCode": 12345}
]
}
我可以通过像这样指向嵌套对象来逐个比较它们
QueryJSON ".Person | to_entries | sort_by(.key) | from_entries"
但是有没有什么方法可以对这些对象内部的属性进行排序(即使这会使它们变平)?谢谢。
jq
确实有一个选项可以对对象内的所有键进行排序:
--sort-keys / -S:
Output the fields of each object with the keys in sorted order.
所以你可以使用以下命令:
jq --sort-keys .
或者,在 WinMerge 语法中:
QueryJSON --sort-keys "."