OpenFeign远程调用返回的是List<T>类型的数据

在使用 OpenFeign 进行远程调用时,如果接口返回的是 List 类型的数据,可以通过以下方式处理:

直接定义返回类型为List

Feign 默认支持 JSON 序列化/反序列化,如果服务端返回的是 List的JSON格式数据,可以直接在 Feign 接口中定义返回类型为 List。

java 复制代码
@FeignClient(name = "item-service")
public interface ItemClient {
    @GetMapping("/items")
    List<Item> getItems();
}

使用ResponseResult包装返回类型

java 复制代码
@FeignClient(name = "item-service")
public interface ItemClient {
    @GetMapping("/items")
    ResponseResult<List<Item>> getItems();
}

使用 ResponseResult包装返回类型时,调用 Feign 客户端获取数据时,需要先将data转成JSON字符串,再将JSON字符串解析为List<Item>

java 复制代码
ResponseResult responseResult = itemClient.getItems();
String itemsJson = JSON.toJSONString(responseResult.getData());
List<Item> items = JSON.parseArray(itemsJson, Item.class);

直接强制转换List<Map<String, Object>>List<WmChannel>是不安全的,因为Java的泛型在运行时会被擦除,编译器无法检查具体的类型是否匹配。而JSON会根据目标类的定义,逐个字段地将数据映射到对象中,从而确保类型安全。
List<WmChannel> wmChannels = (List<WmChannel>)responseResult.getData();

相关推荐
励碼29 分钟前
解决 Sentinel 控制台无法显示 OpenFeign 资源的问题
spring boot·spring cloud·sentinel·bug·openfeign
程序猿零零漆1 个月前
SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门
java·spring cloud·微服务·openfeign
bohu831 个月前
openfeign-一些配置
springboot3·日志·openfeign·拦截器·超时时间
菜菜-plus3 个月前
分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign
java·分布式·微服务·nacos·gateway·springcloud·openfeign
简 洁 冬冬4 个月前
OpenFeign的使用
openfeign
sdg_advance4 个月前
Spring Cloud之OpenFeign的具体实践
后端·spring cloud·openfeign
hac13225 个月前
OpenFeign原理
java·http·微服务·openfeign
OceanSky65 个月前
Spring Cloud OpenFeign 4组件
openfeign·feign
威哥爱编程5 个月前
OpenFeign深入学习笔记
java·springcloud·openfeign