首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用嵌套数组元素的值进行jq排序

使用嵌套数组元素的值进行jq排序
EN

Stack Overflow用户
提问于 2019-11-01 20:26:23
回答 1查看 3.2K关注 0票数 5

我需要一些帮助,使用jq对元素数组进行排序,其中每个元素包含一个嵌套的tags元素数组。我的输入JSON如下所示:

代码语言:javascript
复制
{
  "result": [
    {
      "name": "ct-1",
      "tags": [
        {
          "key": "service_name",
          "value": "BaseCT"
        },
        {
          "key": "sequence",
          "value": "bb"
        }
      ]
    },
    {
      "name": "ct-2",
      "tags": [
        {
          "key": "service_name",
          "value": "BaseCT"
        },
        {
          "key": "sequence",
          "value": "aa"
        }
      ]
    }
  ]
}

我希望使用嵌套的sequence数组中的tags标记的值进行排序,以便输出如下所示:

代码语言:javascript
复制
{
  "result": [
    {
      "name": "ct-2",
      "tags": [
        {
          "key": "service_name",
          "value": "BaseCT"
        },
        {
          "key": "sequence",
          "value": "aa"
        }
      ]
    },
    {
      "name": "ct-1",
      "tags": [
        {
          "key": "service_name",
          "value": "BaseCT"
        },
        {
          "key": "sequence",
          "value": "bb"
        }
      ]
    }
  ]
}

我尝试了以下jq命令:

代码语言:javascript
复制
$ jq '.result |= ([.[] | .tags[] | select(.key == "sequence") | .value] | sort_by(.))' input.json

但我得到了以下结果:

代码语言:javascript
复制
{
  "result": [
    "aa",
    "bb"
   ]
}

如果你知道如何处理这种情况,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-01 20:49:12

from_entries将键值对数组转换为对象,您可以将其与sort_by一起使用,如下所示:

代码语言:javascript
复制
.result |= sort_by(.tags | from_entries | .sequence)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58665496

复制
相关文章

相似问题

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