使用jq查询JSON对象失败,无法获取observations数据
解决jq查询含特殊字符键名的问题
你的问题出在包含冒号的键名不能直接用点语法访问。0:0:0:0:0这种带特殊符号的键,jq会将冒号识别为语法错误,必须改用括号加引号的方式引用键名。
正确命令示例
1. 获取指定observation的第一个值
cat sample3.json | jq '.dataSets[0].series["0:0:0:0:0"].observations["0"][0]'
执行后会输出:1.4529
2. 获取所有observations的数值
如果想一次性提取所有观测值的第一个元素,可以用[]遍历所有observation条目:
cat sample3.json | jq '.dataSets[0].series["0:0:0:0:0"].observations[] | .[0]'
输出结果:
1.4529 1.4472 1.4591
3. 遍历所有series(若有多个series键)
如果你的JSON里series下有多个类似0:0:0:0:0的键,可以直接遍历所有series值,不用指定具体键名:
cat sample3.json | jq '.dataSets[0].series[].observations[] | .[0]'
关键注意点
- 整个jq表达式要用单引号包裹,避免shell解析内部的双引号;
- 所有包含特殊字符(冒号、空格、连字符等)的键名,都必须用
["键名"]的方式访问。
内容的提问来源于stack exchange,提问作者Bryon
相关产品推荐
相关产品推荐

