def input = [ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ] list对象groovy转换成map
时间: 2023-07-02 14:15:03 浏览: 91
可以使用Groovy的`collectEntries`方法将列表对象转换为Map对象,示例如下:
```
def input = [ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ]
def result = input.collectEntries {
[(it.keySet() as List).get(0), it.values().join()]
}
```
这段代码将列表对象`input`中的每个元素转换为一个键值对,其中键为元素中唯一的键,值为元素中的值。执行上述代码后,`result`变量将会是以下Map对象:
```
[105: "210065#100.000000", 105: "210066#50.000000"]
```
需要注意的是,由于Map对象中的键必须是唯一的,所以列表对象中重复的键会被覆盖。
相关问题
def input = [ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ] list对象groovy转换成[105:[210065#100.000000, 210066#50.000000]]
可以使用Groovy的`groupBy`和`collectEntries`方法将列表对象转换为指定格式的Map对象,示例如下:
```
def input = [ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ]
def result = input.groupBy { it.keySet().first() }.collectEntries {
[(it.key): (it.value.collect { it.values().first() })]
}
```
这段代码将列表对象`input`中的每个元素按照唯一的键值进行分组,并将每个键值对应的值转换为一个列表。执行上述代码后,`result`变量将会是以下Map对象:
```
[105: ["210065#100.000000", "210066#50.000000"]]
```
需要注意的是,由于Map对象中的键必须是唯一的,所以列表对象中重复的键会被覆盖。
[ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ]用groovy转换成map
可以使用以下Groovy代码将该字符串转换为Map:
```
def input = '[ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ]'
def json = new JsonSlurper().parseText(input)
def map = json.collectEntries {
[(it.keySet().first()): it.values().first()]
}
println map
```
输出结果为:
```
[105:210065#100.000000, 105:210066#50.000000]
```
注意,由于Map的key必须唯一,因此上述代码中的Map可能会将后面的值覆盖前面的值。如果你需要保留所有的值,可以将Map的value改为一个List,如下所示:
```
def input = '[ { "105": "210065#100.000000" }, { "105": "210066#50.000000" } ]'
def json = new JsonSlurper().parseText(input)
def map = json.inject([:]) { result, item ->
item.each { key, value ->
result[key] = (result[key] ?: []) + value
}
result
}
println map
```
输出结果为:
```
[105:[210065#100.000000, 210066#50.000000]]
```
阅读全文