我试图确定使用groovy返回嵌套键值的最佳方法.如果我有地图:
def map = [
OrganizationName: 'SampleTest',
Address: [
Street: '123 Sample St',
PostalCode: '00000',
]
]
Run Code Online (Sandbox Code Playgroud)
有没有办法归还所有的钥匙?OrganizationName,OrganizationURL,Address.Street,Address.PostalCode?如果我在地图中没有地图,我可以使用map.keySet()作为String [].我应该循环遍历每个键,看看它是否是另一个地图的实例?
Groovy库没有为此提供方法,但您可以编写自己的方法.这是一个可以复制粘贴到Groovy控制台的示例
List<String> getNestedMapKeys(Map map, String keyPrefix = '') {
def result = []
map.each { key, value ->
if (value instanceof Map) {
result += getNestedMapKeys(value, keyPrefix += "$key.")
} else {
result << "$keyPrefix$key"
}
}
result
}
// test it out
def map = [
OrganizationName: 'SampleTest',
Address: [
Street: '123 Sample St',
PostalCode: '00000',
]
]
assert ['OrganizationName', 'Address.Street', 'Address.PostalCode'] == getNestedMapKeys(map)
Run Code Online (Sandbox Code Playgroud)