Curl
從 curl API 請求解析 JSON 數據
我正在使用 Shodan 的 API https://developer.shodan.io/api來獲取我目前的網路警報。我想用 jq 解析出警報的 id。
捲曲請求是
curl -X GET -i https://api.shodan.io/shodan/alert/info?key={API KEY}
該請求的輸出是 json 數據,格式如下:
[ { "name": "Test Alert", "created": "2017-01-09T21:53:17.104000", "expires": 0, "expiration": null, "filters": { "ip": [ "198.20.88.870" ] }, "id": "HKVGCP1WD79Z7W2T", "size": 1 } ]
使用
curl -X GET -i https://api.shodan.io/shodan/alert/info?key={API KEY} | jq '.id'
給出以下錯誤:"parse error: Invalid numeric literal at line 1, column 9"
該
-i
選項意味著 curl 將包含非 JSON 格式的 http 響應標頭。這就是導致您的解析錯誤的原因,但是鑑於您提供的 json,您需要使用[]
它來告訴它迭代數組:curl 'https://api.shodan.io/shodan/alert/info?key={API KEY}' | jq '.[].id'
或者(更直覺地)使用json:
curl 'https://api.shodan.io/shodan/alert/info?key={API KEY}' | json -a id
此外 json(1) 可以
-H
選擇忽略 http 響應標頭,因此您可以使用json -Ha id