- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 OpenFeign 客户端访问 API,获取一些 JSON,并将其转换为 POJO 数组。
以前我只是简单地获取一串 JSON 并使用 Gson 将其转换为数组,如下所示
FeignInterface {
String get(Request req);
}
String json = feignClient.get(request);
POJO[] pojoArray = new Gson().fromJson(json, POJO[].class);
这很有效。我想消除额外的步骤并假装自动解码 JSON 并直接返回 POJO,所以我正在尝试这个
FeignInterface {
POJO[] get(Request req);
}
POJO[] pojoArray = feignClient.getJsonPojo(request);`
我遇到了这个错误
feign.codec.DecodeException:java.lang.IllegalStateException:预期为 BEGIN_ARRAY,但在第 1 行第 2 列路径 $ 处为 STRING $
两种方法使用相同的构建器
feignClient = Feign.builder()
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.target(FeignInterface.class, apiUrl);
大家有什么想法吗?
最佳答案
您破坏了 JSON
负载。在序列化之前,您需要删除所有不支持的字符。 Feign
允许这样做:
If you need to pre-process the response before give it to the Decoder, you can use the mapAndDecode builder method. An example use case is dealing with an API that only serves jsonp, you will maybe need to unwrap the jsonp before send it to the Json decoder of your choice:
public class Example {
public static void main(String[] args) {
JsonpApi jsonpApi = Feign.builder()
.mapAndDecode((response, type) -> jsopUnwrap(response, type), new GsonDecoder())
.target(FeignInterface.class, apiUrl);
}
}
因此,您需要在配置中执行相同的操作:
修剪
响应并删除有效负载开头和结尾的所有空格
。new_line
字符,例如:\r\n
、\r
、\n
使用online tool确保您的 JSON
负载有效并准备好反序列化。
关于java - 如何使用OpenFeign获取pojo数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012543/
在 openFeign 未出现前,Spring 提供了 RestTemplate 作为远程服务调用的客户端,提供了多种便捷访问远程 Http 服务的方法,能够大大提高客户端的编写效率。由于文章内容会使
在微服务开发中SpringCloud全家桶集成了OpenFeign用于服务调用,SpringCloud的OpenFeign使用SpringMVCContract来解析OpenFeign的接口定义。
我在 Spring Boot 中使用 OpenFeign 客户端而不使用 Ribbon 或 Eureka。我创建了一个自定义错误解码器,它按预期处理响应错误,但连接拒绝错误似乎绕过了我的自定义解码器。
大家好,我是三友~~ 前几天有个大兄弟问了我一个问题,注册中心要集成SpringCloud,想实现SpringCloud的负载均衡,需要实现哪些接口和规范。
我有一个 OpenFeign 客户端,设置如下: @FeignClient(name = "myService", qualifier = "myServiceClient", url = "${my
本篇文章涉及底层设计以及原理,以及问题定位,比较深入,篇幅较长,所以拆分成上下两篇: 上:问题简单描述以及 Spring Cloud RefreshScope 的原理 下:当前 s
我正在使用 swagger-codegen 为我的 Feign Client 生成界面。 但是 swagger-codegen 生成这些方法: Optional getObjectMapper();
我正在使用 spring Cloud openFeign 来从 service#1 向 service#2 发出请求 当我使用restTemplate时,我可以在jaeger跟踪中正确地看到2个请求。
简介 我最近使用了 netflix feign 和 ribbon,这非常有用。 一个例子是: @FeignClient(name = "ldap-proxy") public interface Ld
有什么区别: spring-cloud-starter-openfeign ( https://github.com/spring-cloud/spring-cloud-openfeign ) 和 s
我正在使用 Spring Boot 创建基于休息的服务。一切正常。 现在我添加了以下依赖项 org.springframework.cloud
我正在调用一个 API,它将某些 HttpHeaders 列入黑名单,包括 Content-Length ,它似乎是由 spring-openfeign 下的 HttpClient 预设的。为了正确接
我在 spring 和 openfeign 方面遇到问题,我认为你可以帮助我。 我有一个 pom 文件如下: 4.0.0 xx.yyy component 1.0.
OpenApi documentation说它支持千分尺。集成如何工作?除了这个小文档,我找不到任何东西。 我在 Spring Boot 应用程序中有一个 FeignClient @FeignClie
当我尝试实现 ErrorDecoder 来解码 feign 异常时,我发现 response.body() 中的流已关闭,因此当我尝试读取该流时并转换为字符串,它抛出java.io.IOExcepti
当尝试将 feign-httpclient 与 Spring-cloud-starter-openfeign 一起使用时,我收到 SSL 握手异常,而如果我不使用,相同的代码可以工作feign-htt
我在 eclipse java 中有 pom.xml,用于在 java 中构建简单的 Rest Web 服务,但是该依赖项显示错误,我已经尝试并且添加版本和更新项目在依赖项中仍然存在错误,我该如何修复
语境 我有一个 spring boot (version 2.2.6.RELEASE) web 项目。 从这个 Web 应用程序(我称之为“APP1”)我想使用来自另一个 Web 应用程序的 PATC
我有一个带有以下假客户的项目 @FeignClient(name = "name", url = "${tokenService}") public interface TokenService {
目标:从 Spring Boot 1.x (webMvc) 迁移到版本 2 (webFlux),并将 Spring Cloud Edgware SR2 迁移到 FinchleyM8(等待发布版本)。
我是一名优秀的程序员,十分优秀!