我正在使用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库的一些问题,这可能是问题吗?
有什么想法吗?
答案 0 :(得分: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而不是一个函数。