Groovy:解析列表元素

falq053o  于 2022-09-20  发布在  Jenkins
关注(0)|答案(1)|浏览(173)

出于学习的目的,我喜欢解析以下查找表:我想检查分支名称并获取相应的Name值,但我想做的是获取每个分支的名字,如:[BRANCH:“test”]=>name“a”than[BRANCH:“test-1”]=>name“d”;依此类推。

LUT = [
    [branch: "test", name: 'a', image_name: 'abc'],
    [branch: "test", name: 'b', image_name: 'abc'],
    [branch: "test", name: 'c', image_name: 'abc'],
    [branch: "test-1", name: 'd', image_name: 'abc'],
    [branch: "test-1", name: 'e', image_name: 'abc'],
    [branch: "test-2", name: 'f', image_name: 'abc'],
    [branch: "test-2", name: 'g', image_name: 'abc'],
    [branch: "test-2", name: 'h', image_name: 'abc'],
    [branch: "test-3", name: 'i', image_name: 'abc'],
    [branch: "test-3", name: 'j', image_name: 'abc'],
    [branch: "test-4", name: 'k', image_name: 'abc'],
    [branch: "test-5", name: 'l', image_name: 'abc'],
]

例如,结果可能类似于:

result = {
 "test": [{ "name":"a" }],
 "test-1": [{ "name":"d" }],
 "test-2": [{ "name":"f" }],
 "test-3": [{ "name":"i" }], 
"test-4": [{ "name":"k" }], 
"test-5": [{ "name":"l" }], 
}

另外,稍后我可能会将其他值添加到键中,例如在test-1:“test-1”:[{“name”:“a”,“new_name”:“new”}]

x8diyxa7

x8diyxa71#

不确定如何按照您想要的方式格式化结果,但找到每个分支的第一个示例相当容易。

result = [:]
for (map in LUT)
{
    if (!result.containsKey(map['branch']))
    {
        println map['name'] // prints the unique name
        result.put(map['branch'], map['name'])
    }
}

相关问题