3

我正在尝试使用 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().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

我不明白为什么当我用正确的数据类型输入输入时会出现这个错误。

有什么建议么?

4

1 回答 1

4

根据文档,HTTPBuilder 可能会为您解析 JSON。如果您的 JSON 响应的根是 JSON 数组,那么这就解释了 reader 变量中的 ArrayList 对象。

关于这如何解释抛出的异常。闭包的 reader 参数是一个解析 JSON 的 ArrayList,而不是一个未解析 JSON 的 String。因此,代码失败,new JsonSlurper().parseText(reader)因为 reader 不是文本,并且 JsonSlurper 没有定义如何将 ArrayList 解析为 JSON 的方法。

于 2015-06-05T16:49:29.027 回答