使用Groovy将WebService响应转换为Json Arrary和Jsobobject

时间:2016-02-29 11:46:26

标签: groovy soapui jsonslurper

我正在使用SoapUI测试RESTful webservice。我们使用Groovy。 我正在使用jsonslurper将响应解析为Object类型。

我们的回应与此类似:

{
    "language":[
        {
            "result":"PASS",
            "name":"ENGLISH",
            "fromAndToDate":null
        },
        {
            "result":"FAIL",
            "name":"MATHS",
            "fromAndToDate": {
                "from":"02/09/2016",
                "end":"02/09/2016"
            }
        },
        {
            "result":"PASS",
            "name":"PHYSICS",
            "fromAndToDate":null
        }
    ]
}

在此之后,我坚持如何。

  1. 获取数组(因为这是数组(以 - language开头)
  2. 如何通过传递密钥从每个数组单元格获取值(我应该获得result密钥的值,如果只有name='MATHS'。)
  3. 我可以使用Java做到这一点,但是刚刚学习Groovy我无法理解这一点。我们有不同的密钥,名称相同。

1 个答案:

答案 0 :(得分:2)

您可以将其解析为地图,然后使用标准的groovy函数:

def response = '''{
    "language":[
        {"result":"PASS","name":"ENGLISH","fromAndToDate":null},
        {"result":"FAIL","name":"MATHS","fromAndToDate":{"from":"02/09/2016","end":"02/09/2016"}},
        {"result":"PASS","name":"PHYSICS","fromAndToDate":null}
    ]
}'''

import groovy.json.*

// Parse the Json string    
def parsed = new JsonSlurper().parseText(response)

// Get the value of "languages" (the list of results)
def listOfCourses = parsed.language

// For this list of results, find the one where name equals 'MATHS'
def maths = listOfCourses.find { it.name == 'MATHS' }