这是我要筛选的唐飞:
def myMap = [
'myMap':[
// Collect keyOne
"keyOne": [
"fieldOne": "blah",
"fieldTwo": "blah",
"checkIfThisIsSetToTrue": true,
],
// Do not collect keyTwo
"keyTwo": [
"fieldOne": "blah",
"fieldTwo": "blah",
"checkIfThisIsSetToTrue": false,
],
// Do not collect keyThree
"keyThree": [
"fieldOne": "blah",
"fieldTwo": "blah",
//checkIfThisIsSetToTrue not set at all here
],
]]
我只想返回checkIfThisIsSetToTrue == true
的项。checkIfThisIsSetToTrue
也可以为空。
我知道我可以像这样循环遍历它,并将项目添加到新Map:
myMap.each { key, val ->
if (val?.checkIfThisIsSetToTrue):
...
}
但我认为使用collect
或findAll
会更简洁和更时髦。
我试着这样过滤它:
def myVar = myMap.findAll { it?.checkIfThisIsSetToTrue == true }
def myVar = myMap.any{ it?.checkIfThisIsSetToTrue == true }
def myVar = myMap.collect{ it?.checkIfThisIsSetToTrue == true }
但我得到的错误:
No such property: checkIfThisIsSetToTrue for class: java.util.LinkedHashMap$Entry
1条答案
按热度按时间lsmd5eda1#
你可以这样做: