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();

相关推荐
利刃大大18 天前
【SpringCloud】远程调用OpenFeign && 快速入手 && 参数传递 && 继承方式 && 抽取方式 && 远程部署
后端·spring·spring cloud·openfeign·远程调用
七夜zippoe23 天前
OpenFeign全解 声明式REST客户端原理与配置实战
java·负载均衡·springcloud·openfeign·动态代理·核心配置
惊讶的猫1 个月前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
编程彩机1 个月前
互联网大厂Java面试:从微服务到分布式缓存的技术场景解析
redis·spring cloud·消息队列·微服务架构·openfeign·java面试·分布式缓存
J_liaty1 个月前
OpenFeign微服务实战指南
微服务·云原生·架构·openfeign
J_liaty1 个月前
RPC、Feign与OpenFeign技术对比详解
网络·网络协议·rpc·openfeign·feign
递归尽头是星辰2 个月前
Dubbo vs OpenFeign:Spring Cloud Alibaba 生态下的 RPC 框架选型与迁移实战
dubbo·微服务架构·openfeign·微服务选型·rpc 框架·http 客户端
Roye_ack2 个月前
【微服务 Day2】SpringCloud实战开发(微服务拆分步骤 + Nacos注册中心 + OpenFeign + 微服务拆分作业)
java·spring cloud·微服务·nacos·openfeign
咖啡不甜不好喝2 个月前
SpringCloud之OpenFeign
spring cloud·openfeign