Groovy:映射深度嵌套

Groovy:映射深度嵌套,groovy,Groovy,我得到了一个如下所示的地图矩阵: def matrix = [ field1:[role1:[state1:["f1r1s1",true], state2:["f1r1s2",false]], role2:[state1:["f1r2s1",true], state2:["f1r2s2",false]] ], field2:[role1:[state1:["f

我得到了一个如下所示的地图矩阵:

def matrix = [
    field1:[role1:[state1:["f1r1s1",true],
                   state2:["f1r1s2",false]],
            role2:[state1:["f1r2s1",true],
                   state2:["f1r2s2",false]]
           ],
    field2:[role1:[state1:["f2r1s1",true],
                   state2:["f2r1s2",false]],
            role2:[state1:["f2r2s1",true],
                   state2:["f1r2s2",false]]
           ]
]
我正在尝试获取角色为“role1”,状态为“state1”的所有字段。容易的?请帮忙

matrix.values().role1.state1
适用于这种情况,因为您只有一个未知级别可供搜索。

您可以执行以下操作:

def map = matrix.inject([:]) { map, elem -> map << [ (elem.key): elem.value[ 'role1' ][ 'state1' ] ] }

你是说所有字段都有一个role1,这个role1有一个state1?是的,我可以这样做吗:matrix.*.role1.state1?非常好,确实有效。现在,我可以以以下结构结束:[field1:[“f1r1s1”,true],field2:[“f2r1s1”,true]?
[field1:[f1r1s1, true], field2:[f2r1s1, true]]