使用jq获取多页json
调用API时,返回一个json,可以用使用jq获取多页json,json,bash,terminal,jq,Json,Bash,Terminal,Jq,调用API时,返回一个json,可以用 curl "https://mywebsite.com/api/cars.json&page=1" | jq '.' 下面是一个示例输出。鉴于有两页记录(总共112个条目,每页仅显示100个条目),我可以在jq中使用什么命令立即获取这两页数据 { "current_page": 1, "per_page": 100, "total_entries": 112, "items": [ { "id": 1,
curl "https://mywebsite.com/api/cars.json&page=1" | jq '.'
下面是一个示例输出。鉴于有两页记录(总共112个条目,每页仅显示100个条目),我可以在jq
中使用什么命令立即获取这两页数据
{
"current_page": 1,
"per_page": 100,
"total_entries": 112,
"items": [
{
"id": 1,
"name": "vehicleA",
"state": "available",
"charge": 100
},
{
"id": 2,
"name": "vehicleB",
"state": "available",
"charge": 75
},
{
"id": 3,
"name": "vehicleB",
"state": "available",
"charge": 50
}...
jq
不获取页面。您需要使用多个curl
调用获取页面,然后组合JSON输出。
例如,您可以获得组合的.item
属性的JSON数组:
url=https://mywebsite.com/api/cars.json
jq -s '.[0].items + .[1].items' <(curl "$url&page=1" | jq .) <(curl "$url&page=2" | jq .)
计算页数:
((pages = total / 100))
if ((total % 100 > 0)); then
((pages++))
else
然后你可以写一个循环,一页一页地下载结果,
生成
jq
命令[0].items+…+。[n] .items
并使用它调用jq
以获得组合的JSON数组。您不能jq
对HTTP一无所知curl
获取数据jq
只处理curl
的输出。您是否检查了API以查看是否有方法请求多个页面?或者你可以完全避免分页?
((pages = total / 100))
if ((total % 100 > 0)); then
((pages++))
else