У меня есть ответ soapui, как показано ниже, и я попытался проанализировать его и распечатать все элементы (из листа) в ответе json.
Пример Json:
{
"BookID": 7982,
"author": {
"authorname": "roboin"
},
"authorid": "X-1-23",
"BookDetails": [{
"Price": "100",
"Location": "Paris"
}],
"authordob": "1980-11-10",
"Adverts": {
"online": true
}
}
Использование нижеприведенного скрипта groovy для печати всех элементов в ответе. Код ниже идет к каждому элементу в ответе Json и печатается, как показано ниже Ожидаемый результат,
Ожидаемый результат: Печать всех элементов (конечных узлов) jsonpath и значений
$. ['Author'] ['authorname']: roboin
$. ['BookDetails'] [0] ['Price']: 100
Текущий результат: Печатает все элементы и значения
имя автора: roboin
Цена: 100
import groovy.json.*
//Get the test case response from context and parse it
def contextResponse = messageExchange.getResponseContent().toString()
//log.info(contextResponse)
def parseResponse = new JsonSlurper().parseText(contextResponse)
//log.info(parseResponse)
def parseMap(map) {
map.each {
if (it.value instanceof Map) {
parseMap(it.value)
} else if (it.value instanceof List) {
log.info(it.key + ": ")
parseArray(it.value)
} else {
log.info(it.key + ": " + it.value)
}
}
}
def parseArray(array) {
array.each {
if (it instanceof Map) {
parseMap(it)
} else if (it instanceof List) {
parseArray(it)
} else {
log.info("arrayValue: $it");
}
}
}
parseMap(parseResponse)
Я попытался провести какое-то исследование по этому поводу и нашел несколько json path selector в Интернете, которые могут 'не может использоваться внутри моего приложения soapui. Я хочу перебрать и распечатать все элементы json path и их значения.
В настоящее время приведенный выше код iterate и печатает только имя элемента и значения.