如何在groovy中使用JSON slurper动态获取JSON内容值

时间:2017-12-14 13:24:43

标签: json groovy soapui

我试图通过动态传递几个参数来过滤掉JSON响应值。以下是代码。

import com.eviware.soapui.support.XmlHolder
import groovy.json.JsonSlurper

responseContent = testRunner.testCase.getTestStepByName("Request 1").getPropertyValue("Response")
jsonresponse = new JsonSlurper().parseText(responseContent)

log.info jsonresponse.context["parameter"]

context["parameter"]存储Excel工作表中的值,仅为log.info执行context["parameter"],它会正确显示这些值。以下是代码log.info context["parameter"]的输出。

Thu Dec 14 07:18:53 CST 2017:INFO:firstName
Thu Dec 14 07:18:53 CST 2017:INFO:lastName
Thu Dec 14 07:18:54 CST 2017:INFO:frNum
Thu Dec 14 07:18:54 CST 2017:INFO:notes 

但是当我执行代码时

log.info jsonresponse.context["parameter"]

结果:

Thu Dec 14 07:20:41 CST 2017:INFO:[]

Thu Dec 14 07:20:41 CST 2017:INFO:[]

Thu Dec 14 07:20:41 CST 2017:INFO:[]

Thu Dec 14 07:20:42 CST 2017:INFO:[]

Thu Dec 14 07:20:42 CST 2017:INFO:[]

log.info jsonresponse产生以下响应,我需要获取某些值(存储在context["parameter"]中的值)

Thu Dec 14 07:21:45 CST 2017:INFO:[{errorMessage=null, middleName=null, lastName=Kosnick, frName=Kosnick Steven H , mplastName=null, competeRgnTxt=null, doNum=null, gddUnitStDate=null, fdNum=null, mpfirstName=null, legalEntityID=null, noNum=null, contractType=Financial Rep, frNum=046426, offcNum=NO 091, notes=Active, fullTmeSrvDt=null, firstName=Steven, networkOfficeNum=091}]

1 个答案:

答案 0 :(得分:1)

而不是:

log.info jsonresponse.context["parameter"]

试试这个:

log.info jsonresponse[context["parameter"]]

这可以解决您的问题:)