基于jq json中的where子句提取元素

时间:2016-07-20 02:35:12

标签: json jq

我的Json结构如下所示。

如何使用jq提取名称为ansible的项目的ID?

json文件非常大

https://stedolan.github.io/jq/manual/

  {
    "id": 38,
    "name": "ansible",
    "path": "ansible",
    "description": "Ansible playbooks, roles, and supporting tools repos"
  },
  {
    "id": 18,
    "name": "Analytics",
    "path": "analytics",
    "description": "Big Data Analytics projects"
  }

2 个答案:

答案 0 :(得分:6)

假设您的输入实际上是这些对象的数组,您可以这样做:

$ jq --arg name "ansible" '.[] | select(.name == $name).id' input.json

答案 1 :(得分:0)

由于您指示输入非常大,因此您可能需要使用第一个。此解决方案将返回找到的第一个匹配项的ID,然后停止。

 first(.[] | if .name == "ansible" then .id else empty end)