我有一个json文件input.json
,因此:
{
"foo":{
"prefix":"abc",
"body":[1,2,3]
},
"bar":{
"prefix":"def",
"body":[4,5,6]
}
}
我想按外部对象名称排序,"bar"
在"foo"
之前,按字母顺序如下:
{
"bar":{
"prefix":"def",
"body":[4,5,6]
},
"foo":{
"prefix":"abc",
"body":[1,2,3]
}
}
以产生文件X1 M3 N1 X。
此问题的不同版本(here和here)已被问及Java/Javascript
有没有一种方法可以使用sed/awk或boost.json之类的命令行工具来完成此操作?
2条答案
按热度按时间ulmd4ohb1#
使用
jq
,您可以使用keys
内置函数以排序顺序获取键名,并形成相应的值对象注意,
jq
确实有一个字段--sort-keys
选项,不能在这里使用,因为它也在内部排序内部级别对象。bxgwgixi2#
下面是一个无变量的jq解:
还值得注意的是,jq的Go实现
gojq
目前总是对所有JSON对象中的键进行排序。