我试图用JsonSlurper解析JSON文件。但总是出现类似的问题
def jsonParse = null
def http = new HTTPBuilder(url)
http.auth.basic(username, password)
http.request(Method.GET) {
response.success = { resp, reader ->;
jsonParse = new JsonSlurper().parseText(reader)
}
}
每当我运行应用程序时,错误信息显示
方法:groovy.json.JsonSlurper.parseText()的签名不适用于参数类型:(java.util.ArrayList)
我理解JsonSlurper.parseText()要求java.util.ArrayList类型作为输入。因此,我尝试使用下面的代码来找出输入的类型。
def jsonParse = null
def http = new HTTPBuilder(url)
http.auth.basic(username, password)
http.request(Method.GET) {
response.success = { resp, reader ->;
jsonParse = reader
}
}
render jsonParse.getClass()
打印出以下内容:
class java.util.ArrayList
我不明白为什么我在输入正确的数据类型时得到这个错误。
有什么建议吗?
根据文档,HTTPBuilder可以为您解析JSON。如果JSON响应的根是一个JSON数组,那么这就解释了reader变量中的ArrayList对象。
关于如何解释抛出的异常。Closure的reader参数是一个解析JSON的ArrayList,而不是一个未解析JSON的String。因此,代码在new JsonSlurper().parseText(reader)
上失败,因为reader不是文本,并且JsonSlurper没有定义如何将ArrayList解析为JSON的方法。