当前位置: 首页 > news >正文

Java 中使用 Alibaba Fastjson 解析泛型类型 JsonResult<SysUserDTO> 的问题

解决 Java 中使用 Alibaba Fastjson 解析泛型类型JsonResult<SysUserDTO>的问题。

核心问题

由于 Java 的类型擦除机制,直接解析泛型类会丢失泛型参数信息,导致SysUserDTO无法正确反序列化。

解决方案

方案一:使用TypeReference(推荐)

java

复制

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; String jsonStr = "{\"code\":200,\"data\":{\"userId\":1,\"username\":\"admin\"},\"message\":\"success\"}"; // 关键:使用 TypeReference 保留泛型信息 JsonResult<SysUserDTO> result = JSON.parseObject(jsonStr, new TypeReference<JsonResult<SysUserDTO>>() {}); SysUserDTO user = result.getData();

方案二:使用Type对象

java

复制

import com.alibaba.fastjson.JSON; import java.lang.reflect.Type; // 构建带泛型的 Type Type resultType = new com.alibaba.fastjson.TypeReference<JsonResult<SysUserDTO>>() {}.getType(); JsonResult<SysUserDTO> result = JSON.parseObject(jsonStr, resultType);

方案三:先解析为 JSONObject,再转换

java

复制

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; // 先解析外层 JsonResult result = JSON.parseObject(jsonStr, JsonResult.class); // 手动转换 data 字段 Object dataObj = result.getData(); SysUserDTO user = JSON.parseObject(JSON.toJSONString(dataObj), SysUserDTO.class);

方案四:使用 Fastjson2(新版 API)

如果你使用的是 Fastjson2:

java

复制

import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.TypeReference; JsonResult<SysUserDTO> result = JSON.parseObject(jsonStr, new TypeReference<JsonResult<SysUserDTO>>() {});

完整示例

java

复制

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; public class JsonDemo { public static void main(String[] args) { String json = "{\n" + " \"code\": 200,\n" + " \"message\": \"操作成功\",\n" + " \"data\": {\n" + " \"userId\": 1001,\n" + " \"username\": \"zhangsan\",\n" + " \"email\": \"zhangsan@example.com\"\n" + " }\n" + "}"; // ✅ 正确做法 JsonResult<SysUserDTO> result = JSON.parseObject(json, new TypeReference<JsonResult<SysUserDTO>>() {}); System.out.println("Code: " + result.getCode()); System.out.println("User: " + result.getData().getUsername()); } } // 定义类 @Data public class JsonResult<T> { private Integer code; private String message; private T data; } @Data public class SysUserDTO { private Long userId; private String username; private String email; }

常见错误 ❌

java

复制

// 错误!会导致 data 被解析为 LinkedHashMap JsonResult<SysUserDTO> result = JSON.parseObject(jsonStr, JsonResult.class);

依赖配置

xml

复制

<!-- Fastjson 1.x --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <!-- Fastjson2 --> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.43</version> </dependency>

总结

表格

复制

方案适用场景推荐度
TypeReference大多数场景⭐⭐⭐
Type对象需要动态构建类型时⭐⭐⭐
分步转换兼容旧代码或特殊需求⭐⭐
Fastjson2新项目⭐⭐⭐

核心要点:解析带泛型的类时,必须使用TypeReference来保留完整的泛型信息,否则 Fastjson 无法知道T具体是什么类型。

http://www.jsqmd.com/news/354845/

相关文章:

  • 讲讲风机进风口价格合理的供应商,怎么选择有攻略 - mypinpai
  • 完整教程:基于python新闻数据分析可视化系统 Hadoop 新闻平台 爬虫 情感分析 舆情分析 可视化 Django框架 vue框架 机器学习 大数据毕业设计✅
  • 解读全国拉力试验机优质生产商,桌上型拉力试验机怎么收费 - 工业设备
  • 2026重庆装修公司费用对比,十二分装饰能免费上门量房设计吗 - 工业品牌热点
  • 分享ROHS2.0检测仪推荐厂家,高灵敏度产品盘点 - 工业品牌热点
  • 2025年-2026年全屋定制品牌推荐:基于长期稳定性评测,涵盖居家与办公场景痛点分析 - 十大品牌推荐
  • 2026年高新企业审计外部审计推荐,靠谱品牌供应商盘点 - 工业品网
  • 永辉超市购物卡回收变现攻略:快速兑换现金的方法! - 团团收购物卡回收
  • 选安防门关注这些优势,熊熊集团口碑好值得考虑吗? - 工业推荐榜
  • 分析浙江口碑不错的别墅门源头厂家,推荐哪家 - 工业推荐榜
  • 2026年诺丁山艺术中心婚礼价格哪家性价比高,灯光效果揭秘 - 工业品网
  • Java语言提供了八种基本类型。六种数字类型【函数函数123】
  • 2026年口碑好的一站式婚礼企业盘点,费用怎么收 - 工业设备
  • 摆脱论文困扰! 降AIGC平台 千笔·专业降AIGC智能体 VS 笔捷Ai 专科生专属
  • 2026年河北靠谱的牧草膜品牌推荐,口碑好的牧草膜源头厂家全解析 - myqiye
  • 2026年上海值得关注的检测设备品牌,聊聊台硕检测影像测量仪性价比 - 工业设备
  • 2025年-2026年云电脑推荐:基于办公与生产场景评价,针对数据泄露与运维复杂痛点 - 十大品牌推荐
  • 2026年浙江地区粗糙度轮廓仪选购攻略,按需定制费用如何 - 工业设备
  • 格式总出错?AI论文写作软件 千笔·专业论文写作工具 VS PaperRed
  • 2026年肉骨粉干燥机厂家推荐及选购参考:饲料烘干机/豆渣烘干机/羽毛粉干燥机/羽毛粉烘干机/餐厨垃圾烘干机 - 品牌策略师
  • 上海智推时代GEO联系方式整理!2026最新官方渠道汇总 - 速递信息
  • 2026年羽毛粉生产设备公司实力排行:羽毛粉水解罐/鸭毛加工设备/水解羽毛粉设备/鸡毛粉生产设备/高蛋白羽毛粉生产设备 - 品牌策略师
  • 2025年-2026年云电脑推荐:技术趋势与合规评测,涵盖远程办公与软件部署核心痛点 - 十大品牌推荐
  • 一天一个Python库:jinja2 - 强大灵活的Python模板引擎
  • 2026年豆渣烘干机厂家最新推荐,饲料烘干机/肉骨粉烘干机/羽毛粉烘干机/肉骨粉干燥机/餐厨垃圾烘干机 - 品牌策略师
  • 2026年爆破片安全装置厂家TOP5名单出炉,权威数据揭示 - 孟哥商业圈
  • 概念组和神经复习 - LI,Yi
  • 2025年-2026年云电脑推荐:基于办公与生产场景实测评价,针对成本与体验痛点精准指南 - 十大品牌推荐
  • 2026年靠谱的别墅门供应商推荐,为你解决选购难题 - 工业推荐榜
  • 从辰包装纸箱定制价格大概多少钱 - 工业设备