如何使用jq从JSON嵌套数组中提取values字段最后一个元素的值
报错原因
你执行的命令报错是因为data.result是数组类型,不是对象,无法直接用.values做键索引,必须先访问数组内的元素。
正确命令
如果你的result数组固定只有1个元素(和示例结构一致),直接使用以下命令即可提取目标值:
jq '.data.result[0].values[-1][1]' input.json
命令解释:
.data.result[0]:获取result数组的第一个元素(包含values字段的对象).values[-1]:获取values数组的最后一个子数组,-1是jq内置的数组倒数第一位索引标识[1]:获取子数组的第二个元素,也就是你需要的目标数值
如果result数组存在多个元素,需要批量提取所有对应目标值,可将索引[0]换成遍历符[]:
jq '.data.result[].values[-1][1]' input.json
如果你需要直接拿到数值类型的结果,去掉返回值的引号,可以追加tonumber转换:
jq '.data.result[0].values[-1][1] | tonumber' input.json
内容的提问来源于stack exchange,提问作者tomi
相关产品推荐
相关产品推荐

