我想使用JQ通过查看.fff.ggg.hhh.iii
-属性中的值来对每个ddd
-json数组进行排序。
例如,看看这个json:
{
"aaa-1": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "100"}}}},
{"fff": {"ggg": {"hhh": {"iii": "1"}}}},
{"fff": {"ggg": {"hhh": {"iii": "10"}}}}
]
},
"aaa-2": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "1000"}}}},
{"fff": {"ggg": {"hhh": {"iii": "333"}}}}
]
},
"aaa-3": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "77"}}}},
{"fff": {"ggg": {"hhh": {"iii": "88"}}}},
{"fff": {"ggg": {"hhh": {"iii": "5555"}}}},
{"fff": {"ggg": {"hhh": {"iii": "1"}}}}
]
}
...
"aaa-n": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "989898"}}}},
...
{"fff": {"ggg": {"hhh": {"iii": "1"}}}},
]
}
}
我想要的结局应该是这样的:
{
"aaa-1": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "1"}}}},
{"fff": {"ggg": {"hhh": {"iii": "10"}}}}
{"fff": {"ggg": {"hhh": {"iii": "100"}}}}
]
},
"aaa-2": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "333"}}}},
{"fff": {"ggg": {"hhh": {"iii": "1000"}}}}
]
},
"aaa-3": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "1"}}}},
{"fff": {"ggg": {"hhh": {"iii": "77"}}}},
{"fff": {"ggg": {"hhh": {"iii": "88"}}}},
{"fff": {"ggg": {"hhh": {"iii": "5555"}}}}
]
}
...
"aaa-n": {
"ddd": [
{"fff": {"ggg": {"hhh": {"iii": "4"}}}},
...
{"fff": {"ggg": {"hhh": {"iii": "989898"}}}}
]
}
}
我尝试了这些答案的各种组合和变体,但我无法找到解决方案:
- https://stackoverflow.com/a/58665725/504060
- https://stackoverflow.com/a/30332672/504060
- https://stackoverflow.com/a/51125483/504060
我希望我至少能用一种有意义的方式来描述这个问题。
有人能帮我吗?
使用sort_by
更新|=
每个字段的数组,并使用tonumber
:转换为数字
jq '.[].ddd |= sort_by(.fff.ggg.hhh.iii | tonumber)'
{
"aaa-1": {
"ddd": [
{"fff":{"ggg":{"hhh":{"iii":"1"}}}},
{"fff":{"ggg":{"hhh":{"iii":"10"}}}},
{"fff":{"ggg":{"hhh":{"iii":"100"}}}}
]
},
"aaa-2": {
"ddd": [
{"fff":{"ggg":{"hhh":{"iii":"333"}}}},
{"fff":{"ggg":{"hhh":{"iii":"1000"}}}}
]
},
"aaa-3": {
"ddd": [
{"fff":{"ggg":{"hhh":{"iii":"1"}}}},
{"fff":{"ggg":{"hhh":{"iii":"77"}}}},
{"fff":{"ggg":{"hhh":{"iii":"88"}}}},
{"fff":{"ggg":{"hhh":{"iii":"5555"}}}}
]
},
"aaa-n": {
"ddd": [
{"fff":{"ggg":{"hhh":{"iii":"1"}}}},
{"fff":{"ggg":{"hhh":{"iii":"989898"}}}}
]
}
}
演示