0

我正在使用 google-http-java-client-1.10.3-beta 向外部源提供的服务发出 RESTfull Json 请求。

我需要解析响应中出现的 Json,以便为我的应用程序构建一些 POJO。

为此,我使用 HttpResonse 方法“解析为”:

response.parseAs(SomeModel.class)

但我得到了这个例外:

java.lang.IllegalArgumentException: No parser defined for Content-Type: application/json
    at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:497)

响应的 json 格式如下: [{"key" : {"key" : "value", "key" : "value"}}]

在处理带方括号的响应时,我已经用其他 Json 库验证了一些问题,这可能是这里的问题吗?

有任何想法吗?

4

1 回答 1

1

回应我自己,这个api需要你手动设置一个JsonObjectParser对象到所涉及的请求。

JsonObjectParser 可能是 GsonParser 或 JacksonParser 或任何其他实现的解析器。

因此,为了为您的请求设置 GsonParser,您可以使用以下代码:

HttpRequest setJsonParser(HttpRequest request) {
    JsonObjectParser parser = new JsonObjectParser(new GsonFactory());
    return request.setParser(parser);
}

然后你就可以做到:

HttpRequest request = setJsonParser(request).execute().parseAs(SomeModel.class);

您的所有 POJO 都将自动生成。

注意:我已将我的 google-http-java-client 版本升级到 1.11.0-beta,早期版本在调用 setParser 时不会返回 HttpRequest 对象,因此在使用提供的代码时要小心,您可能需要一个 void 代替的一个功能。

于 2012-09-06T13:56:54.473 回答