jq 在键与正则表达式匹配的对象中查找值

问题描述 投票:0回答:2

在下面的 JSON 中,我需要找到每个对象的

id
键的值,其中
state
的值以“failed-”开头

[
  {
    "id": "RA_kwDOGETrS84EmTf2",
    "state": "uploaded"
  },
  {
    "id": "RA_kwDOGETrS84EmTf6",
    "state": "failed-4325423"
  },
  {
    "id": "RA_kwDOGETrS84EmTf7",
    "state": "uploaded"
  }
]

我只提取了

state
的匹配值:

.[] | .state | select(startswith("failed-"))

如何找到

id
对应的值?

json jq
2个回答
4
投票
.[] | select(.state | startswith("failed-")).id

将输出:

"RA_kwDOGETrS84EmTf6"

技巧就是将

state
中的
select()
传递给
startswith()
,然后得到结果
.id


演示


2
投票
.[] | select(.state | test("^failed")).id

是另一种方式

© www.soinside.com 2019 - 2024. All rights reserved.