jq:如何匹配数组之一并获取兄弟值

Pet*_*owe 4 json jq

我有一些像这样的JSON:

{
  "x": [
    {
      "name": "Hello",
      "id": "211"
    },
    {
      "name": "Goodbye",
      "id": "221"
    },
    {
      "name": "Christmas",
      "id": "171"
    }
  ],
  "y": "value"
}
Run Code Online (Sandbox Code Playgroud)

使用jq,给定一个名称值(例如圣诞节),我如何获得它的相关id(即171).

我已经能够在一个数组的对象中检查名称的存在,但我无法弄清楚如何过滤它

jq -r 'select(.x[].name == "Christmas")'
Run Code Online (Sandbox Code Playgroud)

Rom*_*est 7

jq 做法:

jq -r '.x[] | select(.name == "Christmas").id' file
171
Run Code Online (Sandbox Code Playgroud)

select(boolean_expression)如果boolean_expression返回true该输入,该函数将使其输入不变,否则不产生输出.