JsonSlurper. parsetext()适用于参数类型:(java.util.ArrayList)



我试图用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的方法。

相关内容

最新更新