我需要解析以下格式的json
{
"meta": {
"rc": "ok"
},
"data": [
{
"average_wifi_utilization": {
"total": 21.928571428571427,
"na": 9.035714285714286,
"ng": 34.82142857142857
},
"devices_status": {
"uap": {
"adopted": 28,
"connected": 28,
"disconnected": 0,
"pending": 0,
"disabled": 0
},
"usw": {
"adopted": 2,
"connected": 2,
"disconnected": 0,
"pending": 0
},
"ugw": {
"adopted": 0,
"connected": 0,
"disconnected": 0,
"pending": 0
}
},
"wifi_score": {
"client_score_avg": 81,
"clients_with_poor_score": 8,
"clients_with_fair_score": 3,
"clients": 99,
"retry_rate": 0,
"signal": -61,
"latency": 0
}
}
]
}
我需要从“ client_score_avg”键中提取值。
我可以通过以下方式提取第一级信息:
cat file.json | jq '.data'
但是,当我尝试下一步
cat file.json | jq '.data.[0]'
我收到一条错误消息:
jq: error: syntax error, unexpected '[', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
我不确定自己在做什么错。
答案 0 :(得分:2)
我认为您只需要执行以下操作。如果您的data[]
数组包含多个条目,请在[..]
部分中指定索引。就您而言,以下过滤器与在0
[..]
相同
jq '.data[].wifi_score.client_score_avg' file.json
答案 1 :(得分:0)
这是基于步行路径Unix工具的JSON jtc
的替代解决方案:
bash $ <file.json jtc -w'<client_score_avg>l'
81
bash $
-它会以递归方式找到标签为client_score_avg
的条目
PS>披露:我是jtc
工具的创建者