我正在使用 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 格式如下: [{“键”:{“键”:“值”,“键”:“值”}}]
在处理带方括号的响应时,我已经尝试过其他 Json 库的一些问题,这可能是这里的问题吗?
有什么想法吗?
最佳答案
回应我自己,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 而不是函数。
关于java - 没有为 Content-Type : application/json 定义解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270066/