news 2026/2/28 3:19:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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具体是什么类型。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/26 10:12:50

实测对比后 8个降AI率网站测评:专科生必看的降AI率工具推荐

在当前的学术写作环境中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;已经成为高校和科研机构重点关注的对象。对于专科生来说&#xff0c;撰写论文时如果过度依赖AI工具&#xff0c;很容易导致论文出现明显的AI痕迹&#xff0c;进而被查重系统标记为高AI率&#xff0c;…

作者头像 李华
网站建设 2026/2/28 18:32:40

大模型使用进阶指南:如何将个人经验转化为可复用Agent Skills

Agent Skills是将知识和流程打包成可重用技能的开放标准&#xff0c;解决传统提示词脆弱、无法复用的问题。通过创建标准化的"技能包"&#xff0c;能让AI记住做事方式&#xff0c;实现稳定输出、经验复用和传承。文章通过周报生成、上线验收、设计评审等案例&#xf…

作者头像 李华
网站建设 2026/2/24 8:49:57

摆脱论文困扰! 9个AI论文软件测评:专科生毕业论文+开题报告高效助手

在当前学术环境日益严格的背景下&#xff0c;论文写作已成为专科生毕业过程中最头疼的环节之一。从选题构思到文献综述&#xff0c;从框架搭建到内容撰写&#xff0c;每一步都可能成为拖延与焦虑的源头。为此&#xff0c;我们基于2026年的实测数据与真实用户反馈&#xff0c;推…

作者头像 李华
网站建设 2026/2/25 10:27:43

Python爬虫新篇章:利用异步技术与现代框架高效采集联合国等国际组织公开数据

引言&#xff1a;国际组织公开数据的价值与挑战在全球化日益深入的今天&#xff0c;联合国、世界银行、世界卫生组织等国际机构的公开数据已成为研究全球经济、社会发展、公共卫生和环境变化的重要资源。这些数据不仅为政策制定者提供决策依据&#xff0c;也为研究人员、企业和…

作者头像 李华
网站建设 2026/2/27 23:29:45

AWVS 保姆级教学!漏洞扫描工具安装 + 实操一步到位

Acunetix Web Vulnerability Scanner&#xff08;AWVS&#xff09;是用于测试和管理Web应用程序安全性的平台&#xff0c;能够自动扫描互联网或者本地局域网中是否存在漏洞&#xff0c;并报告漏洞。 1. AWVS简介 Acunetix Web Vulnerability Scanner&#xff08;AWVS&#xf…

作者头像 李华
网站建设 2026/2/27 18:27:13

闭眼入!10个AI论文软件测评:本科生毕业论文+开题报告高效写作指南

在当前学术写作日益依赖AI工具的背景下&#xff0c;本科生群体在撰写毕业论文和开题报告时面临诸多挑战&#xff0c;如选题思路不清晰、文献资料查找困难、格式排版繁琐以及内容原创性难以保障等。为帮助同学们高效完成学术任务&#xff0c;我们基于2026年最新的测评数据与真实…

作者头像 李华