JQ通过具有相同嵌套json对象的不同根进行排序



我想使用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"}}}}
]  
}
}

我尝试了这些答案的各种组合和变体,但我无法找到解决方案:

  1. https://stackoverflow.com/a/58665725/504060
  2. https://stackoverflow.com/a/30332672/504060
  3. 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"}}}}
]
}
}

演示

最新更新