在 groovy 的 for 循环中遍历子地图

Iterate through a child map in a for loop in groovy

让我们假设我有一张如下图所示的地图,其中包含另一张地图(子地图)。我喜欢将子地图打印为每个键的单独行。

def map =[   
  1: [
    [name:"Jerry", age: 42, city: "New York"],
    [name:"Long", age: 25, city: "New York"]
  ],  
  2: [
    [name:"Dustin", age: 29, city: "New York"],
    [name:"Bob", age: 34, city: "New York"]
  ]
]

目前,我遍历了父映射,并且能够打印名称。但是,这实际上不是我想要的。我想看看我是否至少可以遍历父地图。到目前为止我没有看到错误。

    for(allentries in map){
    loggerApi.info("${allentries.key}: ${allentries.value.name}") // this prints [Jerry, Long] for key 1 & [Dustin, Bob] for key 2
    loggerApi.info("${allentries.key}: ${allentries.value.age}")
    loggerApi.info("${allentries.key}: ${allentries.value.city}")
    
    }

你能告诉我应该在上面的代码中添加什么来查看像这样的单独的行吗:

Name Age City
Jerry 42 New York
Long 25 New York
Dustin 29 New York
Bob 34 New York

欣赏。

谢谢。

Br, 努尔

假设您在问题中的输入结构有误,并且您在 map 中的每个值中都有一个映射列表,您可以在内部循环中迭代它们

​def map =[   
  1: [
    [name:"Jerry", age: 42, city: "New York"],
    [name:"Long", age: 25, city: "New York"]
  ],  
  2: [
    [name:"Dustin", age: 29, city: "New York"],
    [name:"Bob", age: 34, city: "New York"]
  ]
]

map.each { key, value ->
  value.each { submap ->
    println "$key $submap.name $submap.age $submap.city"
    // Or with no prefixing number:
    // println "$submap.name $submap.age $submap.city"
  }
}