如何使用包含groovy字符串中的点的顶级地图键

时间:2015-10-02 16:48:19

标签: groovy

有没有办法从包含带点符号的键的地图中渲染模板?

def config = '''
person {
    name = "foo"
}
'''

def flat_config_map = new ConfigSlurper().parse(config)

// I know it works without this line but I prefer
// to keep one flat map (for other reasons)
flat_config_map = flat_config_map.flatten()

def engine = new GStringTemplateEngine()

// Question: is there a way to define this template to output "Hello foo"
// even from a flat map (e.g. with key "person.name") ?
def template = 'Hello ${person.name}'

println engine.createTemplate(template).make(flat_config_map)

我找到的最接近的解决方案是通过引用的标识符,但它需要封装在另一个对象中?类似于:${config."person.name"}

感谢您的帮助。

更新(标记为重复后):

我忘记了重要的一点。我使用" ConfigSlurper"和#34; GStringTemplate"从Java作为外部库。我使用这些库是因为他们完成了这项工作,但我真的不熟悉Groovy。此外,我不想在我的组件中混合语言。

基本上,我想这样做:

Parameters in a file (ConfigSlurper) => flat Map (Java) => Template in a file (GStringTemplateEngine)

平面地图步骤对我来说很重要,因为在java世界中,只处理一个属性级别(使用" level1.level2"等索引编制索引)比使用多个属性更容易水平地图。

感谢您的评论,但我认为它并不重复,因为我宁愿在模板文件中寻找解决方法的语法。

0 个答案:

没有答案