JsonSlurper不返回方法的签名:groovy.json.JsonSlurper.parseText()适用于参数类型:(java.util.ArrayList)
我正试图用JsonSlurper.parseText解析JSON文件,但总是遇到类似的问题JsonSlurper不返回方法的签名:groovy.json.JsonSlurper.parseText()适用于参数类型:(java.util.ArrayList),json,parsing,groovy,jsonslurper,Json,Parsing,Groovy,Jsonslurper,我正试图用JsonSlurper.parseText解析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().parseTe
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对象
关于如何解释抛出的异常。闭包的reader参数是已解析JSON的ArrayList,而不是未解析JSON的字符串。因此,代码在
new JsonSlurper().parseText(reader)
上失败,因为reader不是文本,并且JsonSlurper没有定义方法来将ArrayList解析为JSON。。。。我发誓我从没想过HTTPBuilder会帮我解析JSON。。。非常感谢你!!这解决了OP的问题,但没有回答OP的问题。当搜索这个问题的答案时,这个问题在谷歌搜索结果中不断出现,但是这个问题的公认答案提供了一个解决方法,而不是实际问题的答案:JsonSlurper不返回方法签名:groovy.json.JsonSlurper.parseText()适用于参数类型:(java.util.ArrayList)这可能会有所帮助