首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQ排序-使用相同的嵌套json对象的不同根

JQ排序-使用相同的嵌套json对象的不同根
EN

Stack Overflow用户
提问于 2022-03-23 21:01:56
回答 1查看 157关注 0票数 0

我想使用JQ对每个ddd-json数组进行排序,方法是查看它在.fff.ggg.hhh.iii-property中的值。

例如,看看这个json:

代码语言:javascript
复制
{
  "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"}}}},
    ]  
  }
}

我想要的结果应该是这样的:

代码语言:javascript
复制
{
  "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

我希望我至少能以一种有意义的方式来描述这个问题。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-23 21:07:42

使用|=更新每个字段的数组,并使用sort_by转换为数字

代码语言:javascript
复制
jq '.[].ddd |= sort_by(.fff.ggg.hhh.iii | tonumber)'
代码语言:javascript
复制
{
  "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"}}}}
    ]
  }
}

演示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71593996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档