用 jq 解析数组中的 JSON 个元素

Parse JSON Elements in Array with jq

我正在尝试弄清楚如何使用 jq 在下面的 JSON 示例中仅打印属性-> 首选项部分。让我感到震惊的是,这是一个包含多个条目的数组,这些条目由一个 id 键值对标识,我需要 attributes->preferences 部分只是来自 id 为 1 的数组元素,而不知道前面数组条目的确切顺序时间.

[
  {
    "id": 1,
    "attributes": {
      "preferences": {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3",
        "key4": "value4",
        ...
      }
    },
    ...
  },
  {
    "id": 2,
    ...
  },
  {
    "id": 4,
    ...
  },
  ...
]

我想要的输出是:

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3",
  "key4": "value4",
  ...
}
jq '.[] | select( .id == 1 ) | .attributes.preferences'

Demo 在 jqplay