如何从JSON中获取特定的数组节点,然后使用Groovy一一打印



我具有以下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]

也可以根据某些过滤器找到某些书。例如,找到一本书,其descriptionGrammer

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]    
}

最新更新