我的json如下所示:
[
[
{
"id": "abcd"
},
{
"address": [
"140 Deco st"
]
}
],
[
{
"id": "xyz"
},
{
"dummy": "This is dummy"
}
],
[
{
"id": "12356"
},
{
"address": [
"140 Deco st"
]
}
]]
现在,我只想捕获具有虚拟值“ This is dummy”的那些id。某些数据可能具有也可能没有虚拟和地址字段。
我在下面尝试过,但给了我错误“ ...无法检查其收容条件”
jq -c '.[] | .[] | select(.dummy | contains("This is dummy")) | .[] | .id'
非常感谢您的帮助!
答案 0 :(得分:0)
contains
很难正确使用。由于要求是:
仅捕获那些具有“ This is dummy”虚拟值的ID
我建议:
.[]
| select( any(.[]; .dummy == "This is dummy") )
| add
| .id
或者(取决于您的详细要求):
.[]
| select( any(.[]; .dummy == "This is dummy") )
| .[]
| .id? // empty