Bash 具有动态名称的 jq
Bash jq with dynamic name
我正在尝试创建一个脚本来从 curl 命令的 json 中读取 return 代码。
我的 curl 命令是:
curl -sk 'https://192.168.0.1/custom/getData.php?device=mydevice&object=http--HTTP_v6_Global Index&indicator=http_httpCode&plugin=xxx' | jq '.'
json 输出为:
{
"device": "mydevice",
"object": "http--HTTP_v6_Global ",
"object_descr": "HTTP download of http://192.168.0.1",
"indicator": "http_httpCode",
"indicator_descr": null,
"plugin": "xxx",
"starttime": 1650468121,
"endtime": 1650468421,
"data": {
"1650468248": {
"http_httpCode#HTTP Code": 200
}
}
}
如果 1650468248
是动态值,如何读取值 "http_httpCode#HTTP Code"
?
您可以使用 to_entries
,这样您就可以使用 .value
来定位 'unknown' 键:
jq '.data | to_entries | first | .value."http_httpCode#HTTP Code"'
另一种方法 'looping over everything' 或者 ..
or .[]
:
jq '.data | .. | ."http_httpCode#HTTP Code"? // empty'
jq '.data | .[]."http_httpCode#HTTP Code"'
他们都是return200
谢谢我解决了。
这是我的解决方案:
jq -r '.data | .[]."http_httpCode#HTTP Code"'
我正在尝试创建一个脚本来从 curl 命令的 json 中读取 return 代码。
我的 curl 命令是:
curl -sk 'https://192.168.0.1/custom/getData.php?device=mydevice&object=http--HTTP_v6_Global Index&indicator=http_httpCode&plugin=xxx' | jq '.'
json 输出为:
{
"device": "mydevice",
"object": "http--HTTP_v6_Global ",
"object_descr": "HTTP download of http://192.168.0.1",
"indicator": "http_httpCode",
"indicator_descr": null,
"plugin": "xxx",
"starttime": 1650468121,
"endtime": 1650468421,
"data": {
"1650468248": {
"http_httpCode#HTTP Code": 200
}
}
}
如果 1650468248
是动态值,如何读取值 "http_httpCode#HTTP Code"
?
您可以使用 to_entries
,这样您就可以使用 .value
来定位 'unknown' 键:
jq '.data | to_entries | first | .value."http_httpCode#HTTP Code"'
另一种方法 'looping over everything' 或者 ..
or .[]
:
jq '.data | .. | ."http_httpCode#HTTP Code"? // empty'
jq '.data | .[]."http_httpCode#HTTP Code"'
他们都是return200
谢谢我解决了。 这是我的解决方案:
jq -r '.data | .[]."http_httpCode#HTTP Code"'