如何在数组结构中获取单个值的groovy

问题描述 投票:0回答:1

我的英语不是最好的,但我会尝试:o)

我在Jenkins Pipeline文件中遇到groovy问题。

我将展示我的代码与我的代码有点不同,因此理解起来并不复杂,但它具有相同的含义。

我已经定义了这样的2D数组:

def address=[
                1: [NAME:'PAUL', 
                            Telephone: [
                                1: [number: '1234', id:'office'],
                                2: [number: '2345', id:'mobile'],
                                3: [number: '4567', id:'home'],
                                ]],
                2: [NAME:'PETER', 
                            Telephone: [
                                1: [number: '9876', id:'office'],
                                2: [number: '7654', id:'mobile'],
                                3: [number: '5432', id:'home'],
                                ]],
                3: [NAME:'MICHAEL', 
                            Telephone: [
                                1: [number: '5647', id:'office'],
                                2: [number: '4738', id:'mobile'],
                                3: [number: '2954', id:'home'],
                                ]],                                                                
]

然后我有一个像这样的功能。

def showNumbers(address){
    address.each{entry ->
        name=entry.value.NAME
        echo 'Name: '+name
        // prints out the whole 2D array
        echo "Print Out 1 = ${entry}"
        // prints out only the name
        echo "Print Out 2 = ${entry.value.NAME}"
        // prints out the Telephone array
        echo "Print Out 3 = ${entry.value.Telephone}"

        // now I want to save only the first number "1234" to do later something with it...
        save_first_number=?????

        // print out the number array
        entry.value.Devices.each{telephone ->
            echo 'Number from: '+name
            echo 'Number: '+telephone.value.number + ' - ID: '+telephone.value.id


        }// End of => entry.value.Devices.each{entry ->
    }// End of => array.each{entry ->
}

顺便说一句:我知道这个地址数组在Jenkins中没有任何意义,但正如我所说,这只是我的代码中的一个例子!

所以我的问题是,我不知道如何从第一个条目中的“数字”中得到第一个单值[1:]我只需要值'1234'然后,当我进入下一个迭代时,我想从彼得那里得到号码“9876”等等。

我的想法是这样的......

save_first_number = entry.value.Telephone[1].value.number

但这不起作用。

我希望我的意思很清楚:o)我希望在这种情况下有人可以帮助我。

最好的问候,祝你有个愉快的一天。

jenkins-groovy
1个回答
0
投票

由于entry.value.Telephone [1]是一个HashMap,你可以像这样访问它的元素:

save_first_number = entry.value.Telephone[1]['number']
save_first_number = entry.value.Telephone[1].number // works as well

// to check types:
// println "${entry.value.Telephone[1].getClass()}" // returns LinkedHashMap
© www.soinside.com 2019 - 2024. All rights reserved.