gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:11:38 24 4
gpt4 key购买 nike

我正在使用 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 格式如下:[{“键”:{“键”:“值”,“键”:“值”}}]

在处理带方括号的响应时,我已经尝试过其他 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-client 版本升级到 1.11.0-beta,早期版本在调用 setParser 时不会返回 HttpRequest 对象,因此使用时要小心对于所提供的代码,您可能需要一个 void 而不是函数。

关于java - 没有为 Content-Type : application/json 定义解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com