如何使用jq提取无键名API返回数组结构中的指定位置数据
jq 提取无键名 JSON 数组流数据方案
你遇到的是标准JSON Lines格式的返回(多个独立数组依次输出),jq原生支持解析这类输入,按以下命令操作即可:
1. 提取每个数组的第2到第11位元素
注意jq的数组索引从0开始计数,你需求里的第2位对应索引1,第11位对应索引10,用数组切片语法即可匹配:
# 把API请求命令替换成你实际的调用地址即可 curl 你的API接口地址 | jq '.[1:11]'
.[1:11]是左闭右开的切片规则,刚好会返回索引1到10的共10个元素,符合你的需求。
2. 查询指定标识对应数组的第5位数据
你需求里的标识是数组的第1位(索引0),第5位对应索引4,用select过滤器筛选匹配项后取值即可:
单标识查询(比如查1400对应的第5位数据)
curl 你的API接口地址 | jq 'select(.[0] == "1400") | .[4]'
多标识批量查询(比如同时查1400、1401的对应值)
可以自定义输出结构更便于查看:
curl 你的API接口地址 | jq 'select(.[0] == "1400" or .[0] == "1401") | {"标识": .[0], "第5位数值": .[4]}'
注意事项
- 如果API返回中夹杂非JSON格式的杂项字符,可以给jq加
-R参数先读取原始文本再过滤有效JSON内容,你给出的返回格式为标准JSON流,无需额外参数即可直接解析。 - 如果要把结果输出为原生数据格式(不加jq默认的引号等格式),可以给jq加
-r参数。
内容的提问来源于stack exchange,提问作者papampi
相关产品推荐
相关产品推荐

