从 groovy 配置文件动态分配值
Assigning values dynamically from a groovy config file
当我在我的 Groovy 代码中从文件中读取值时,我想在遍历映射值时将这些值分配给对象中的等效属性!
代码:
new ConfigSlurper().parse(new File(configManager.config.myFile.filepath)
.toURI().toURL()).each { k,v ->
if (k == 'something') {
v.each {
myObject.$it =v.$it
// so here i want this dynamic assignment to occur
}
}
}
如果您使用以下形式,您的代码已经可以像这样工作了:
myObject."$it.key" = it.value
这里有一个保护性更强的版本:
class MyObject {
Long x,y
}
def obj = new MyObject()
def cfg = new ConfigSlurper().parse('''\
a {
x = 42
y = 666
}
b {
x = 93
y = 23
}''')
cfg.b.findAll{ obj.hasProperty(it.key) }.each{
obj.setProperty(it.key,it.value)
}
assert obj.x==93 && obj.y==23
当我在我的 Groovy 代码中从文件中读取值时,我想在遍历映射值时将这些值分配给对象中的等效属性!
代码:
new ConfigSlurper().parse(new File(configManager.config.myFile.filepath)
.toURI().toURL()).each { k,v ->
if (k == 'something') {
v.each {
myObject.$it =v.$it
// so here i want this dynamic assignment to occur
}
}
}
如果您使用以下形式,您的代码已经可以像这样工作了:
myObject."$it.key" = it.value
这里有一个保护性更强的版本:
class MyObject {
Long x,y
}
def obj = new MyObject()
def cfg = new ConfigSlurper().parse('''\
a {
x = 42
y = 666
}
b {
x = 93
y = 23
}''')
cfg.b.findAll{ obj.hasProperty(it.key) }.each{
obj.setProperty(it.key,it.value)
}
assert obj.x==93 && obj.y==23