我正在尝试遍历地图并创建新的地图值。以下是输入
def map = [[name: 'hello', email: ['on', 'off'] ], [ name: 'bye', email: ['abc', 'xyz']]]
我希望结果数据如下:
[hello: ['on', 'off'], bye: ['abc', 'xyz']]
我现在的代码 -
result = [:]
map.each { key ->
result[random] = key.email.each {random ->
"$random"
}
}
return result
上面的代码返回
[hello: [on, off], bye: [abc, xyz]]
正如您从上面所看到的,来自on
,off
和abc
,xyz
的引用已经消失,这在我尝试时会给我带来问题检查列表值[on, off]
答案 0 :(得分:1)
没关系。如果您在Groovy控制台中看到结果,它们仍然是String
。
下面应该足够了:
map.collectEntries {
[ it.name, it.email ]
}
如果您仍需要单引号来创建GString
而不是String
,则需要进行以下调整:
map.collectEntries {
[ it.name, it.email.collect { "'$it'" } ]
}
我个人认为后面的做法背后没有任何理由。顺便说一句,map
不是Map
,而是List
,您可以重命名它以避免不必要的混淆。
答案 1 :(得分:0)
您可以将其转换为json对象,然后所有内容都会有引号
答案 2 :(得分:0)
这样做。应该/可能有一种更加时髦的方式。
def listOfMaps = [[name: 'hello', email: ['on', 'off'] ], [ name: 'bye', email: ['abc', 'xyz']]]
def result = [:]
listOfMaps.each { map ->
def list = map.collect { k, v ->
v
}
result[list[0]] = ["'${list[1][0]}'", "'${list[1][1]}'"]
}
println result