Java 没有为内容类型定义解析器:application/json
我使用google-http-java-client-1.10.3-beta对外部源提供的服务发出restfulljson请求 我需要解析响应中的Json,以便为我的应用程序构建一些POJO 为此,我使用了HttpResonse方法“parse as”:Java 没有为内容类型定义解析器:application/json,java,android,google-app-engine,google-api,Java,Android,Google App Engine,Google Api,我使用google-http-java-client-1.10.3-beta对外部源提供的服务发出restfulljson请求 我需要解析响应中的Json,以便为我的应用程序构建一些POJO 为此,我使用了HttpResonse方法“parse as”: response.parseAs(SomeModel.class) 但我有一个例外: java.lang.IllegalArgumentException: No parser defined for Content-Type: applic
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对象 JSONObject解析器可以是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对象,因此在使用所提供的代码时请小心,您可能需要一个空值而不是函数。我猜您缺少JSON库。Google java客户端与Jackson和GSON一起打包。确保此LIB位于您的路径中。您可以从这个zip中获得它们:实际上,我正在使用zip自述中建议的gson-2.1,但是谢谢您的回答。