谁能帮我把一个列表转换成Groovy中的map列表?
我有一个列表如下
[war, jar]
和名称为"value" = 2.0.0
的变量我想把它转换成一个映射列表[["pack": "war", "ver": "2.0.0"],["pack": jar, "ver": "2.0.0"]]
并创建一个json.
{
"ProjectId": "Projects-16",
"ChannelId": "Channels-41",
"Version": "2.0.1.0-10",
"selectedPackages": [{"pack": "war", "ver": "2.0.0"}, {"pack": jar, "ver": "2.0.0"]}]
}
解决方案如下:
import groovy.json.JsonOutput
def packages = ["war", "jar"]
def value = "2.0.0"
def list = packages.collect { [pack : it, ver : value] }
def object = [
ProjectId: "Projects-16",
ChannelId: "Channels-41",
Version: "2.0.1.0-10",
selectedPackages: list
]
def json = JsonOutput.toJson(object)
println JsonOutput.prettyPrint(json)
JSON中的每个{}
实体都是Groovy中的映射,因此期望的[{}, {}]
是映射列表。您只需要使用collect和正确的转换来构造正确的对象。
编辑
我更新了解决方案,使用列表和变量value
返回所需的确切json输出。
输出如下:
{
"ProjectId": "Projects-16",
"ChannelId": "Channels-41",
"Version": "2.0.1.0-10",
"selectedPackages": [
{
"pack": "war",
"ver": "2.0.0"
},
{
"pack": "jar",
"ver": "2.0.0"
}
]
}