如何在Map groovy中获取所有嵌套的键?

gzszwxb4  于 2023-05-16  发布在  其他
关注(0)|答案(1)|浏览(203)

我需要用groovy中的所有precedent键来迭代这个Map,我需要在Jenkins中运行它。

a={b={c=1,d=2,e=3},r={p=4},q=5}

我想像下面的输出和输入是动态的,格式可能会有所不同。请帮助我,因为我正在努力。

a:b:c=1

a:b:d=2

a:b:e=3

a:r:p=4

a:q=5
h43kikqp

h43kikqp1#

你可以使用一个递归函数来实现这个结果,下面是一个例子:

def iterateMap(Map map, String prefix = "") {
    map.each { key, value ->
        if (value instanceof Map) {
            iterateMap(value, "$prefix$key:")
        } else {
            println "a:$prefix$key=$value"
        }
    }
}

def a = [
    b: [
        c: 1,
        d: 2,
        e: 3
    ],
    r: [
        p: 4
    ],
    q: 5
]

iterateMap(a)

在这段代码中,iterateMap函数接受一个map作为输入,并接受一个可选的前缀字符串(初始化为空字符串)。它迭代Map中的每个键值对。如果该值本身是一个map,则该函数将使用嵌套的map和更新后的前缀(“$prefix$key:“)递归地调用自身。如果值不是一个Map,它将以所需的格式(“$prefix$key=$value”)打印键值对。

相关问题