groovy 使用嵌套findAll的JSON的Gpath

imzjd6km  于 2022-11-01  发布在  其他
关注(0)|答案(2)|浏览(209)

我有以下响应负载

[{
    "id": 1,
    "catname": "Cat01",
    "items": [{
        "Name": "Item01",
        "id": 2
    }, {
        "Name": "Item02",
        "id": 3
    }]
},
{
    "id": 4,
    "catname": "Cat02",
    "items": [{
        "Name": "Item03",
        "id": 5
    }, {
        "Name": "Item04",
        "id": 6
    }]
},
{
    "id": 7,
    "catname": "Cat03",
    "items": [{
        "Name": "Item05",
        "id": 8
    }]
}

]
我想检索所有items. id的列表(但不包括它们的父项的id),因此:[2,3,5,6,8].这个findAll{it}.items.findAll{it}.id我试过了,但是没有用.欢迎任何帮助.谢谢!

mm5n2pyu

mm5n2pyu1#

这里不需要使用findAll进行迭代,可以使用collectMany自动展开列表
假设您解析的json位于变量json中,您可以简单地执行以下操作:

json.items.collectMany { it.id }
s8vozzvw

s8vozzvw2#

没关系,我找到了答案:)。我需要在这里使用flat

items.flatten().id

成功了。我从这里得到了答案:How to search in anonymous and nested array using find or findAll in groovy's closures using REST-Assured library?

相关问题