Json 使用jq提取内部数组匹配值

Json 使用jq提取内部数组匹配值,json,jq,Json,Jq,我的json如下所示: [ [ { "id": "abcd" }, { "address": [ "140 Deco st" ] } ], [ { "id": "xyz" }, { "dummy": "This is dummy" } ], [ { "id": "12356" }, {

我的json如下所示:

[
[
    {
        "id": "abcd"
    },
    {
        "address": [
            "140 Deco st"
        ]
    }
],
[
    {
        "id": "xyz"
    },
    {
        "dummy": "This is dummy"
    }
],
[
    {
        "id": "12356"
    },
    {
        "address": [
            "140 Deco st"
        ]
    }
]]
现在,我只想捕获那些伪值为“This is dummy”的ID。某些数据可能有也可能没有虚拟字段和地址字段

我在下面尝试过,但它给了我一个错误“…无法检查它们的控制”


非常感谢您的帮助

包含的
很难正确使用。因为要求是:

仅捕获伪值为“This is dummy”的ID

我建议:

.[]
| select( any(.[]; .dummy == "This is dummy") )
| add
| .id
或者(取决于您的详细要求):


contains
的正确使用相当棘手。因为要求是:

仅捕获伪值为“This is dummy”的ID

我建议:

.[]
| select( any(.[]; .dummy == "This is dummy") )
| add
| .id
或者(取决于您的详细要求):


很好…我尝试了第一个解决方案,效果完全符合预期,但是第一个解决方案和第二个解决方案有什么区别。你能解释一下任何()吗…刚刚尝试了第二个解决方案,但不起作用…出现“无法用字符串索引字符串”错误。。但是我同意第一个条件。
any(stream;condition)
询问条件是否适用于流中的任何项目。我已经更正了第二个解决方案,并添加了一个“?”以增强健壮性。有关详细信息,请参阅手册NOW 2nd one工作但不提供输出和返回空。我不确定两者之间有什么区别,但我对第一个完全满意。检查第二个解决方案的副本是否显示了四行。主要的区别是:缺少“id”、{id:null]}和{id:false}的处理。啊,好吧……这很好,因为id将始终存在于我的面前,但很高兴知道!!很好…我尝试了第一个解决方案,效果完全符合预期,但是第一个解决方案和第二个解决方案有什么区别。你能解释一下任何()吗…刚刚尝试了第二个解决方案,但不起作用…出现“无法用字符串索引字符串”错误。。但是我同意第一个条件。
any(stream;condition)
询问条件是否适用于流中的任何项目。我已经更正了第二个解决方案,并添加了一个“?”以增强健壮性。有关详细信息,请参阅手册NOW 2nd one工作但不提供输出和返回空。我不确定两者之间有什么区别,但我对第一个完全满意。检查第二个解决方案的副本是否显示了四行。主要的区别是:缺少“id”、{id:null]}和{id:false}的处理。啊,好吧……这很好,因为id将始终存在于我的面前,但很高兴知道!!
.[]
| select( any(.[]; .dummy == "This is dummy") )
| .[]
| .id? // empty