我想从LinkedHashmap获取具有如下动态键的值。
def map = [Employee1: [Status: 'Working', Id: 1], Employee2: [Status: 'Resigned', Id: 2]]
def keys = "Employee1.Status"
def keyPath = "";
def keyList = keys.tokenize(".");
keyList.eachWithIndex() { key, i ->
keyPath += "$key"
if(i != keyList.size() - 1){ keyPath += "." }
}
println keyPath //Employee1.Status
println map.keyPath //Always null
println map.'Employee1'.'Status' //Working
println map.Employee1.Status //Working
在这里
map.keyPath
总是返回null
。如何通过动态键获取值? 最佳答案
我认为您可以简单地做到这一点:
def tmpMap = map;
keyList.subList(0, keyList.size - 1).each {key ->
tmpMap = map[key]
}
println tmpMap[keyList[keyList.size - 1]]
这将提取子图,直到达到实际值键为止。为了使它更加稳定,您应该添加一些逻辑以检查与当前键关联的值是否实际上是映射。