0

为什么这样有效:

def m =  [[1,11], [2,22], [3,33]]
println(m.collectEntries())

输出:[1:11, 2:22, 3:33]

但这不起作用:

def m = [[Name:sub, Value:23234], [Name:zoneinfo, Value:Europe/London]]

println(m.collectEntries())

输出: groovy.lang.MissingPropertyException: No such property: sub for class

我想处理该映射,以便获得如下键值对列表:

[“名称:子”:“值:23234”,“名称:zoneinfo”:“值:欧洲/伦敦”]

哪里Name:sub是关键,哪里是Value:23234价值。

参考https://stackoverflow.com/a/34899177/9992516

4

3 回答 3

2

在第二个示例中sub,并且zoneinfo被读取为变量名,而不是字符串,您需要引用它们。

def m = [[Name:'sub', Value:23234], [Name:'zoneinfo', Value:'Europe/London']]
println m.collectEntries{ ["Name:${it.Name}", "Value:${it.Value}"] }
于 2018-08-12T10:46:27.260 回答
1

它在您的班级中找不到sub字段,可能您想要一个字符串“sub”?

基本上,地图条目可以通过两种方式声明:

Name: 'sub'

'Name': 'sub'

对于键,假设它是一个字符串,即使它没有被引号包裹。

但是对于该值,必须用引号括起来。否则,将其视为变量(或字段)

于 2018-08-12T09:38:34.480 回答
0

鉴于您想要的结果:

["Name:sub" :"Value:23234", "Name:zoneinfo": "Value:Europe/London"]

您实际需要做的是引用每对中的整个项目:

def m = [["Name:sub", "Value:23234"], ["Name:zoneinfo", "Value:Europe/London"]]
于 2018-08-21T20:15:55.737 回答