如何使用jq解析含布尔值的JSON并提取aa数组内的timestamp、price数据
问题解决方法
报错原因
你使用的jq -c .[].aa命令会遍历JSON顶层所有键的对应值,再尝试为每个值取aa字段。而顶层success字段对应的值是布尔类型true,无法用字符串索引,因此触发报错。
解决方案
不需要手动删除success字段,直接指定完整路径提取目标数据即可,完全不会涉及success键的处理:
方案1:直接提取aa数组所有元素(保留timestamp和price字段)
执行命令:
cat jsonfile.json | jq -c '.data.aa[]'
输出结果为:
{"timestamp":123456,"price":1} {"timestamp":123457,"price":2}
方案2:显式指定只保留timestamp和price字段
如果后续aa数组元素新增其他字段,也只会输出你需要的两个字段:
cat jsonfile.json | jq -c '.data.aa[] | {timestamp, price}'
注意事项
你贴出的原始JSON存在语法错误:aa数组的第二个元素缺少闭合的},处理前需要先修正为合法JSON格式,否则jq会先报解析错误。
内容的提问来源于stack exchange,提问作者Sala Dus
相关产品推荐
相关产品推荐

