Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有为内容类型定义解析器:application/json_Java_Android_Google App Engine_Google Api - Fatal编程技术网

Java 没有为内容类型定义解析器:application/json

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

我使用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: 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,但是谢谢您的回答。