从JSON有效负载中提取多个字段

时间:2016-07-21 13:05:15

标签: json jq

我有以下有效负载

[
  {
    "name": "ProductCostingBJF_v2.3.0",
    "commit": {
    },
    "protection": {
      "enabled": true,
      "required_status_checks": {
        "enforcement_level": "off",
        "contexts": []
      }
    }
  },
  {
    "name": "master",
    "commit": {
    },
    "protection": {
      "enabled": true,
      "required_status_checks": {
        "enforcement_level": "off",
        "contexts": []
      }
    }
  }
]

你能帮助使用jq语法来提取和呈现

ProductCostingBJF_v2.3.0    true
master                      true

我得到了第一部分......我可以用

获得分支名称
jq  -r .[].name

但我无法弄清楚如何获得启用的值。

2 个答案:

答案 0 :(得分:1)

您可以使用以下jq命令:

jq -r '.[]| "\(.name) \(.protection.enabled)"' a.json 

您可以将其传送到column以获得对齐的输出:

jq -r '.[]| "\(.name) \(.protection.enabled)"' a.json | column -t

输出:

ProductCostingBJF_v2.3.0  true
master                    true

答案 1 :(得分:0)

以下是使用连接线(-j)的替代语法:

$ jq -j '.[] | .name, "\t", .protection.enabled, "\n"' payload.json 
ProductCostingBJF_v2.3.0    true
master  true
相关问题