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

相关推荐
Roye_ack12 天前
【微服务 Day2】SpringCloud实战开发(微服务拆分步骤 + Nacos注册中心 + OpenFeign + 微服务拆分作业)
java·spring cloud·微服务·nacos·openfeign
咖啡不甜不好喝16 天前
SpringCloud之OpenFeign
spring cloud·openfeign
全靠bug跑22 天前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign
serendipity_hky24 天前
【SpringCloud | 第5篇】Seata分布式事务
分布式·后端·spring·spring cloud·seata·openfeign
serendipity_hky1 个月前
【SpringCloud | 第2篇】OpenFeign远程调用
java·后端·spring·spring cloud·openfeign
失足成万古风流人物1 个月前
面试官问MyBatis/OpenFeign的原理?我手搓了个MyHttp怼回去!(反八股版)
mybatis·springboot·openfeign·动态代理
三口吃掉你2 个月前
微服务之OpenFeign、hystrix熔断降级、loadbalancer负载均衡
hystrix·微服务·负载均衡·openfeign
洛克大航海3 个月前
3-SpringCloud-LoadBalancer-OpenFeign服务调用与负载均衡
spring·spring cloud·负载均衡·openfeign·loadbalancer
whltaoin3 个月前
SpringCloud项目阶段五:openFeign服务接入以及接入腾讯云内容安全服务实现文章提交违规信息自动审核
spring cloud·腾讯云·openfeign·内容安全
勇往直前plus5 个月前
一文学习nacos和openFeign
java·学习·微服务·openfeign