You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy遍历Map of Maps嵌套结构输出键值的正确实现方法

问题根源

你最初的遍历代码报错,核心是each闭包的参数顺序写反了。Groovy 遍历Map时,each方法传入的闭包第一个参数是外层键,第二个参数才是键对应的嵌套Map值。你代码里的item实际拿到的是LinkedHashMap.Entry类型的键值对对象,自然不存在firstName属性,才会抛出MissingPropertyException。

你尝试转ConfigObject调用toProperties()的方案本身和需求不匹配:这个方法的作用就是把多层嵌套Map拍平成带层级前缀的一维键值对,本来就会丢失外层独立键的结构,属于绕路的无效方案。

最佳实现方案

不需要做额外的类型转换,直接修正each的参数顺序即可,代码最简洁也最符合Groovy的惯用写法:

// 定义示例Map
def exampleMap = [
    "person1": ["firstName": "John", "lastName": "Doe", "id": "1"],
    "person2": ["firstName": "Jane", "lastName": "Doe", "id": "2"]
]

// 遍历打印
exampleMap.each { outerKey, innerProp ->
    println outerKey
    println innerProp.firstName
    println innerProp.lastName
    // 如果需要不同人员的输出之间空行,可以额外加一句 println()
}

运行后输出完全匹配你的预期:

person1
John
Doe
person2
Jane
Doe

如果需要只输出指定外层键对应的内容,直接在遍历内加判断即可,比如仅打印person1的信息:

exampleMap.each { outerKey, innerProp ->
    if (outerKey == "person1") {
        println outerKey
        println innerProp.firstName
        println innerProp.lastName
    }
}

内容的提问来源于stack exchange,提问作者anechkayf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:21:28