我们说我有以下结构:
{
"data": [
{
"wrapper_1": {
"attr1": "val1",
"attr2": "val2",
"attr3": true
}
},
{
"wrapper_2": {
"attr1": "val1",
"attr2": "val2",
"attr3": false
}
},
{
"wrapper_3": {
"attr1": "val1",
"attr2": "val2",
"attr3": false
}
},
...
]
}
正如你所看到的,我有一个数组,由于某种原因,它有一组具有不同"标题的对象" (包装器),但其内部结构由存在于该数组中的所有元素共享。
我attr3
只有一个真正的元素,而data
的其余元素在该元素上会有false
值。
鉴于条件(attr3 == true
),我需要过滤该元素并获得attr2
的值。我是jq的初学者,我试过这个没有运气:
jq '.path.to.data[] | select(.attr3 == true)'
我正在阅读map
和select
的组合,但我无法弄明白。此外,我知道上面的代码段不起作用,因为它假设data
的元素是同质的,而事实并非如此。
对此有任何建议将不胜感激。
谢谢!
答案 0 :(得分:0)
使用您的数据,过滤器:
.data[][] | select(.attr3) | .attr2
产生
"val2"