如何在Groovy中从响应中获取JSON值

i7uq4tfw  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(406)

我正在使用Jenkins共享库中的以下函数。

/* The below function will list the groups */

def list_groups(server_url,each_group_name,authentication){

    def groups_url  = server_url + "/api/v1/groups"  

    def response =  httpRequest consoleLogResponseBody: true,

                    contentType: 'APPLICATION_JSON',

                    customHeaders: [[maskValue: false, name: 'Authorization', value: authentication]],

                    httpMode: 'GET', ignoreSslErrors: true, responseHandle: 'NONE', url: groups_url,

                    validResponseCodes: '100:599'

    if(response.status == 404){

        throw new Exception("Server url not found! Please provide correct server URL.")

    }

    else{

            if(response.status == 400 ||  response.status == 403){

                        throw new Exception("Invalid Access token or Access token expired!")

        }

    }

    def result = readJSON text: """${response.content}"""

}

=====================================================================
我得到了下面的响应,
响应代码:HTTP/1.1 200确定
回应:

[{"id":2,"name":"Default User"},{"id":3,"name":"fos"},{"id":4,"name": "kXR"},{"id":5,"name": "Sgh"},{"id":6,"name":"ksn"},{"id":7,"name":"ALb"}]

成功:状态代码200在可接受的范围内:第一百章:五百九十九
要求:
我需要从响应中获取JSON主体(id & name)---〉{“id”:7,“name”:“ALb”}的最后一个输出,并使用groovy将其打印出来并存储在一个变量中。

z8dt9xmd

z8dt9xmd1#

首先,需要将响应字符串解析为JSON对象,为此,可以使用Jenkins本地方法readJSON或类似JsonSlurperClassic的方法。然后,可以使用JSON路径表达式来提取值。请看下面的示例。

def jsonObj = readJSON text: response.getContent()
def id = jsonObj.id[-1]
def name = jsonObj.name[-1]
echo "ID: $id | NAME: $name"

相关问题