如何从curl返回的JSON输出中提取指定值并解决JQ的Failed writing body报错
问题解决方法
报错原因
- 执行命令缺少
curl工具调用前缀,直接将接口地址作为命令执行,导致数据流异常,触发curl: (23) Failed writing body报错 - 接口返回的JSON结构为数组,你使用的
jq匹配规则.id是针对根对象的写法,无法匹配到数组内的id字段
正确执行命令
curl -s "http://10.0.0.10/api/v4/projects/9/repository/commits/0d1c552f13141bcaf9280d38bcb8f44140b873f9/merge_requests" | jq -r '.[].id'
参数说明
curl加-s参数启用静默模式,仅输出接口响应内容,不会输出请求进度、错误提示等额外信息,避免干扰jq解析jq规则.[].id会先遍历数组内的所有对象,再提取每个对象的id字段值;如果确认返回数组只有一个元素,也可以写成.[0].id直接取第一个元素的id值
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

