为什么 map.collectEntries() 不适用于此数据 [[Name:sub, Value:23234]] - Groovy
Why map.collectEntries() not working for this data [[Name:sub, Value:23234]] - Groovy
为什么这有效:
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
我想处理该映射,以便获得如下键值对列表:
["Name:sub":"Value:23234","Name:zoneinfo":"Value:Europe/London"]
其中 Name:sub
是键,Value:23234
是值。
引用
在您的 class 中找不到 sub
字段,您可能想要一个字符串 "sub"?
基本上,地图条目可以通过两种方式声明:
Name: 'sub'
和
'Name': 'sub'
假设键是一个字符串,即使它没有用引号引起来。
但对于值,必须用引号引起来。否则,它被视为一个变量(或字段)
在第二个示例中,sub
和 zoneinfo
被读取为变量名,而不是字符串,您需要引用它们。
def m = [[Name:'sub', Value:23234], [Name:'zoneinfo', Value:'Europe/London']]
println m.collectEntries{ ["Name:${it.Name}", "Value:${it.Value}"] }
鉴于您想要的结果:
["Name:sub" :"Value:23234", "Name:zoneinfo": "Value:Europe/London"]
您实际需要做的是在每对中引用整个项目:
def m = [["Name:sub", "Value:23234"], ["Name:zoneinfo", "Value:Europe/London"]]
为什么这有效:
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
我想处理该映射,以便获得如下键值对列表:
["Name:sub":"Value:23234","Name:zoneinfo":"Value:Europe/London"]
其中 Name:sub
是键,Value:23234
是值。
引用
在您的 class 中找不到 sub
字段,您可能想要一个字符串 "sub"?
基本上,地图条目可以通过两种方式声明:
Name: 'sub'
和
'Name': 'sub'
假设键是一个字符串,即使它没有用引号引起来。
但对于值,必须用引号引起来。否则,它被视为一个变量(或字段)
在第二个示例中,sub
和 zoneinfo
被读取为变量名,而不是字符串,您需要引用它们。
def m = [[Name:'sub', Value:23234], [Name:'zoneinfo', Value:'Europe/London']]
println m.collectEntries{ ["Name:${it.Name}", "Value:${it.Value}"] }
鉴于您想要的结果:
["Name:sub" :"Value:23234", "Name:zoneinfo": "Value:Europe/London"]
您实际需要做的是在每对中引用整个项目:
def m = [["Name:sub", "Value:23234"], ["Name:zoneinfo", "Value:Europe/London"]]