如何在SoapUI中使用Groovy从Json Response中提取参数?

时间:2013-11-06 14:56:48

标签: json groovy soapui

以下是我的回复..

jsonCallback({"validationErrors":null,
              "response":{"type":"PreTokenResponse",
                          "preToken":"43a81ef8-693d-4e3d-ad83-f8ed76f39756",
                          "errors":null},
              "exception":null});

现在我使用

testRunner.testCase.getTestStepByName("xxx").getPropertyValue("response")

上面的脚本正在提取响应。现在我想提取“preToken”值。

怎么做?

由于

2 个答案:

答案 0 :(得分:0)

我猜你试过了:

testRunner.testCase.getTestStepByName("xxx").getPropertyValue("response").preToken

答案 1 :(得分:0)

奇怪的是,你的响应而不是纯粹的 Json 对象,有jsonCallback()字符串包裹你的 Json

假设你的回复有这个文本,你必须在解析 Json 对象之前删除它,一旦删除它你可以使用JsonSlurper解析它并访问你的{ {1}}元素使用正确的路径:

preToken

我仅将您的响应用作字符串,以便在 SOAPUI 中为您提供一个工作示例,它必须相同,但从testStep的属性中获取import groovy.json.JsonSlurper def response = '''jsonCallback({"validationErrors":null, "response":{"type":"PreTokenResponse", "preToken":"43a81ef8-693d-4e3d-ad83-f8ed76f39756", "errors":null}, "exception":null});''' // remove the unnecesary data response = response - 'jsonCallback(' response = response - ');' // now you've a correct json log.info response // parse the json def json = new JsonSlurper().parseText(response) // access the desired value log.info json.response.preToken assert '43a81ef8-693d-4e3d-ad83-f8ed76f39756' == json.response.preToken

response