用jq解析Json数据

时间:2017-06-07 09:44:06

标签: json jq

需要帮助解析使用jq的Json数据,我曾经使用json路径解析数据为[?(@。type =='router')]。externalIP。我不知道如何使用jq。

查询的结果应该从type = router提供.externalIp。 198.22.66.99

Json数据摘录如下

[
  {
    "externalHostName": "localhost",
    "externalIP": "198.22.66.99",
    "internalHostName": "localhost",
    "isUp": true,
    "pod": "gateway",
    "reachable": true,
    "region": "dc-1",
     "type": [
      "router"
    ],
    "uUID": "b5f986fe-982e-47ae-8260-8a3662f25fc2"
  },
  ]

##

2 个答案:

答案 0 :(得分:0)

cat your-data.json | jq '.[]|.externalIP|select(type=="string")'
"198.22.66.99"
"192.22.66.29"
"192.22.66.89"
"192.66.22.79"

说明:

.[]                   | .externalIP            | select(type=="string")    
for every array entry | get field 'externalIP' | drop nulls

EDIT / ADDENDUM:过滤类型(期望路由器位于类型数组的索引0上)

cat x | jq '.[]|select(.type[0] == "router")|.externalIP'
"198.22.66.99"
"192.22.66.89"

答案 1 :(得分:0)

描述:

  

我想仅为数组“type”提取externalIP:[“router”]

相应的jq查询是:

.[] | select(.type==["router"]) | .externalIP

基于“router”是否属于指定类型的查询:

.[] | select(.type|index("router")) | .externalIP