jq:如何匹配数组之一并获取属性值

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

我有一些像这样的 JSON:

{
  "x": [
    {
      "name": "Hello",
      "id": "211"
    },
    {
      "name": "Goodbye",
      "id": "221"
    },
    {
      "name": "Christmas",
      "id": "171"
    }
  ],
  "y": "value"
}

使用jq,给定一个名称值(例如圣诞节),我怎样才能获得它的关联ID(即171)。

我已经能够检查数组对象之一中是否存在该名称,但我不知道如何过滤它

jq -r 'select(.x[].name == "Christmas")'
json jq
2个回答
20
投票

jq
方法:

jq -r '.x[] | select(.name == "Christmas").id' file
171

如果

select(boolean_expression)
对于该输入返回
boolean_expression
,则函数
true
会保持其输入不变,否则不产生输出。


0
投票

也可以这样做:

jq '.x[] | select(.name == "Christmas").id'

您也可以在链接online jq play

尝试此操作
© www.soinside.com 2019 - 2024. All rights reserved.