我具有以下JSON格式: -
{
"id": "102",
"brand": "Disha",
"book": [{
"slr": "EFTR",
"description": "Grammer",
"data": "TYR",
"rate": true,
"numberOfPages": 345,
"maxAllowed": "12",
"currentPage": 345
},
{
"slr": "EFRE",
"description": "English",
"data": "TYR",
"rate": true,
"numberOfPages": 345,
"maxAllowed": "12",
"currentPage": 345
},
{
"slr": "BGTR",
"description": "French",
"data": "TYR",
"rate": true,
"numberOfPages": 345,
"maxAllowed": "12",
"currentPage": 345
}]
}
我想编写刻板代码以获取书籍数组并在此之前一个人打印它,我还需要计算书籍的数组节点。
我尝试了以下代码: -
def response = context.expand( '${book#Response}' );
def slurper = new JsonSlurper();
String inputJSON = slurper.parseText(response)
def strFinalValueToRead = "$." + "book[0]"
def strActualValue = parse(inputJSON).read(strFinalValueToRead).toString()
log.info strActualValue
我遇到错误,
com.jayway.jsonpath.invalidjsonexception:net.minidev.json.parser.parseexception:文件的意外结束。
任何帮助将不胜感激。
您可以使用Script Assertion
进行相同的REST请求测试步骤,该步骤可以避免另一个额外的凹槽步骤。
脚本断言
assert context.response, 'Response is empty or null'
def json = new groovy.json.JsonSlurper().parseText(context.response)
log.info json.book
上面的所有书籍详细信息。
您也可以使用索引显示特定的书籍详细信息,例如0索引的显示书。
log.info json.book[0]
也可以根据某些过滤器找到某些书。例如,找到一本书,其description
为Grammer
。
log.info json.book.find {it.description == 'Grammer'}
Map m = new groovy.json.JsonSlurper().parseText(json)
m.book.each{println it}
这已经足够了。
最后,经过了很多努力。我得到了解决方案,并使用地图和列表尝试了它。
Object inputJSON = slurper.parseText(response)
def countBook = inputJSON.book.size()
for(int i=0; i<countBook; i++) {
Map result = (Map) inputJSON
List bookNode = result.get("book")
log.info bookNode[i]
}