我想用Groovy的ConfigSlurper解析閉包的數據結構(在本例中是一個配置文件)。解析結果將存儲在類似於數據結構的對象層次結構中。關於這個數據結構的唯一特別的事實是一些閉包名稱在一個閉包中重複自己,例如apple
和。我看起來像ConfigSlurper
內部使用Map
替代現有的值。我想知道ConfigSlurper
是否實際上能夠處理這些類型的數據結構。我使用的Groovy版本是1.7.10。或者,我嘗試使用GroovyShell
來執行關閉,但執行順序有一些問題。用Groovy的ConfigSlurper讀取嵌套閉包的配置文件
String rules = """
fruits {
apples {
apple {
id = 11
colors {
green {
name = 'test1'
}
green {
name = 'test2'
}
}
}
apple {
id = 12
colors {
green {
name = 'test3'
}
green {
name = 'test4'
}
}
}
}
}
"""
ConfigSlurper configSlurper = new ConfigSlurper()
def config = configSlurper.parse(rules)
println config
我可能會從ConfigSlurper開始,並重寫[解析(腳本,URL)方法](https://github.com/groovy/groovy-core/blob/master/src/main/groovy/util/ ConfigSlurper.groovy#L157),但是在簡單地查看代碼之後,這不會是一個2分鐘的工作......我猜測它是在範圍變量中找到舊節點,所以使用這不是你所需要的... –