openFeign远程调用时使用Mybatis-plus的IPage接口进行返回分页数据失败的记录

1|0openFeign远程调用时使用Mybatis-plus的IPage接口进行返回分页数据失败的记录

1|11. 问题描述

前置条件:

  1. 使用openFeign+mybatis-plus
  2. 使用json格式进行数据的传输,即限制web传输的数据格式为 content-type = application/json

问题:

1. 微服务A 通过 openFeign 调用微服务B 的接口时返回数据为 null

2. 直接调用微服务B的接口,返回数据正常

1|22. 问题解决过程

1. 首先在微服务B中查看该接口返回的数据,是否正常

结果:

1. 有数据进行返回

2. 对数据进行打印时显示为对象地址,而非期望的json字符串

2. 试图修改返回的Object,改为Object.toString()

结果:

打印出的数据仍为对象地址

3. 试图修改返回的Object,将其进行Json序列化,即改为JSONObject.toJSON(data),进行返回

结果:

打印的数据为期望的的json字符串,但如此改动十分不友好,不利于后续的开发,而且需要修改方法的返回类型,故放弃

4. 进一步分析发现,mybatis-plus中的IPage接口虽然实现了Serializable接口,但未实现Json序列化

解决方案:

  • 自定义一个Page类,继承IPage接口的实现类Page,实现Json序列化即可

实现:

public class SerializableForFastJsonPage<T> extends Page<T> { @Override public String toString() { return JSONObject.toJSONString(this);// 实现json序列化 } }

结果:

使用SerializableForFastJsonPage类替换IPage类,即可实现json序列化数据进行返回

5. 注意:在接收方进行反序列化的时候,需要指定具体的接收的数据类型,不可使用泛型,使用泛型会导致接收不到数据


__EOF__

本文作者前方丶路
本文链接https://www.cnblogs.com/strive-for-life/p/13880295.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ws_hawk  阅读(1520)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示