调用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
}...
2条答案
按热度按时间holgip5t1#
jq
不提取页面。您需要使用多个curl
调用来提取页面,然后合并JSON输出。例如,您可以获得组合.item
属性的JSON数组:如果你事先不知道你需要的页数,那么你就需要更加努力地工作,但这当然是可能的。
从第一页获取条目总数:
计算页数:
然后,您可以编写一个循环来逐页下载结果,生成
jq
命令.[0].items + ... + .[n].items
并使用它调用jq
以获得组合的JSON数组。mrfwxfqh2#
如果可以下载所有页面并创建一个包含所有条目的数组(很像上面的@janos答案),那么就不需要通过计算生成
jq
命令,而是可以像jq '[.[].items] | flatten'
那样使用flatten