没有为Content-Type:application/json定义解析器



我正在使用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而不是一个函数。

相关内容

  • 没有找到相关文章

最新更新