首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据键值过滤jq?

如何根据键值过滤jq?
EN

Stack Overflow用户
提问于 2022-09-06 03:38:03
回答 2查看 52关注 0票数 -2

我与JQ库很新,我想使用他们的名字过滤json文件(例如。然后,我希望返回与名称相同的对象中所有commitId的键值。

我的json文件

代码语言:javascript
复制
{
   "releases":[
      {
         "name":[
            "release-1"
         ],
         "artifacts":[
            {
               "name":"pkg-1",
               "commitId":"523asdc3"
            },
            {
               "name":"pkg-2",
               "commitId":"523asdc3"
            },
            {
               "name":"pkg-3",
               "commitId":"523asdc3"
            }
         ]
      },
      {
         "name":[
            "release-2"
         ],
         "artifacts":[
            {
               "name":"pkg-3",
               "commitId":"523asdc3"
            },
            {
               "name":"pkg-4",
               "commitId":"523asdc3"
            },
            {
               "name":"pkg-5",
               "commitId":"523asdc3"
            }
         ]
      }
   ]
}

预期产出

代码语言:javascript
复制
523asdc3
523asdc3
523asdc3
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-06 09:17:18

代码语言:javascript
复制
.releases[] | select(.name | index("release-1")) | .artifacts[].commitId

将显示每个commitId,其中name包含(index()) release-1

结果:

代码语言:javascript
复制
"523asdc3"
"523asdc3"
"523asdc3"

JqPlay演示

票数 0
EN

Stack Overflow用户

发布于 2022-09-08 05:12:16

.releases[]|select(.name|contains("release-1"))|.artifacts[].commitId

是另一种方式。

.releases[]=select(.name==“Release-1”)\.artifacts[].commitId

是另一种方式。

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

https://stackoverflow.com/questions/73616458

复制
相关文章

相似问题

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