如何使用jq从嵌套JSON数组中提取age字段值?
使用jq提取嵌套JSON数组中的age字段值
嘿,这事儿不难,我来给你一步步讲清楚怎么用jq搞定这个嵌套数组里的age值提取!
首先先明确你的JSON结构是两层数组嵌套,最里面才是包含目标字段的对象:
[ [ { "name": "x", "age": "y", "class": "z" } ] ]
基础提取命令
针对这个结构,最直接的jq命令就是:
jq '.[0][0].age'
我给你拆解下每个部分的作用:
.[0]:先定位到外层数组的第一个元素(也就是里面那层数组).[0]:接着定位到内层数组的第一个元素(就是包含age的那个对象).age:最后提取这个对象里的age字段值
实际使用示例
如果你的JSON内容存在data.json文件里,执行命令:
jq '.[0][0].age' data.json
或者直接通过管道传递JSON字符串:
echo '[ [ { "name": "x", "age": "y", "class": "z" } ] ]' | jq '.[0][0].age'
执行后会输出带引号的"y",要是想得到不带引号的纯文本值,加上-r参数即可:
jq -r '.[0][0].age' data.json
扩展场景:内层数组有多个对象
如果内层数组里有多个包含age字段的对象,比如:
[ [ { "name": "x", "age": "y" }, { "name": "a", "age": "b" } ] ]
要一次性提取所有age值,可以用这个命令:
jq '.[0][] .age'
这样会逐行输出每个对象的age值。
内容的提问来源于stack exchange,提问作者user123
相关产品推荐
相关产品推荐

