我有一个带有点符号键的 map ,但我需要它作为嵌套 map 。

[test.key.one: 'value1', text.key.two: 'value2']

现在结果应该是
[
    test: [
        key: [
            one: 'value1',
            two: 'value2'
        ]
    ]
]

这是我对代码的想法
def extract(String key, String value) {

    if(key.contains(".")) {
        def (String target, String subKey) = key.split('\\.', 2)
        return ["$target": extract(subKey, value)]
    } else {
        return ["$key": extractType(value)]
    }

}

但我想知道在闭包中是否有任何巧妙的魔法来做到这一点,或者在其他好东西的帮助下使其更简单。

最佳答案

有一个方便的类:groovy.util.ConfigSlurper

def map = ['test.key.one': 'value1', 'test.key.two': 'value2']
def props = new Properties()
props.putAll(map)
println new ConfigSlurper().parse(props) // [test:[key:[two:value2, one:value1]]]

唯一的缺点是它需要 java.util.Properties 实例,因此您需要从 map 创建一个。

10-06 04:22
查看更多