Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jq获取多页json_Json_Bash_Terminal_Jq - Fatal编程技术网

使用jq获取多页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,

调用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,
      "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