根据对象的键在对象的JSON列表中查找条目

时间:2019-01-15 16:08:10

标签: arrays json select jq

除了其他顶级内容外,我还拥有JSON,其中包括以下内容:

{
  "organizationStructure": [
    {
      "id": 212119,
      "key": "level2"
    },
    {
      "id": 212112,
      "key": "level1"
    }
  ]
}

如何过滤关键字以仅找到给定的ID(例如“ level2”的ID)?

2 个答案:

答案 0 :(得分:4)

或者,使其更简单(或更复杂,具体取决于您的观点):

jq '.organizationalStructure[] |
    select(.key == "level1") | {id: .id}' 

通常,清理输出很不错:

jq -r '.organizationalStructure[] |
        select(.key == "level1") | {id: .id}.id'

根据PesaThe在评论中的建议,可以将其简化为:

jq -r '.organizationalStructure[] |
    select(.key == "level1").id' 

{.id: id}可以简单地写成{id}

答案 1 :(得分:0)

可以使用select完成此操作。请注意,如果有多个项的键为level2,则只会返回第一个项:

.organizationalStructure | map(select(.key == "level2") | .id)[0]