我正在使用google-http-java-client1.10.3-beta向外部源提供的服务发出RESTfull Json请求。
我需要解析响应中的Json,以便为我的应用程序构建一些POJO。
为此,我使用HttpResense方法"parse as":
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库的一些问题,这可能是这里的问题吗?
有什么想法吗?
响应我的请求,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客户端版本升级到1.11.0-beta,早期版本在调用setParser时不会返回HttpRequest对象,所以在使用所提供的代码时要小心,你可能需要一个void而不是一个函数。