news 2026/4/3 15:57:18

后端springboot的接收前端发来的数据反序列化原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
后端springboot的接收前端发来的数据反序列化原理

可以直接复制运行的「完整反序列化示例代码」基于你原来的结构,但已经改成符合反序列化环境的正确写法

我会分成3 个文件(真实工程就是这样),逻辑非常清晰。


一、Test1.java(可反序列化的数据结构)

package org.example; // 外部类(可以理解为一个命名空间) public class Test1 { // ✅ static 内部类:可以被反射、反序列化独立创建 public static class Test2 { private int age; private String name; // ✅ 反序列化必须要的无参构造 public Test2() { } public Test2(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void printInfo() { System.out.println("name = " + name + ", age = " + age); } } }

二、Main.java(反序列化环境模拟)

package org.example; import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { // 模拟:来自网络 / 文件 / 接口 的 JSON 数据 String json = "{ \"age\": 11, \"name\": \"android\" }"; // 反序列化框架 ObjectMapper mapper = new ObjectMapper(); // ✅ 反序列化 static 内部类 Test1.Test2 t2 = mapper.readValue(json, Test1.Test2.class); // 验证结果 t2.printInfo(); } }

三、pom.xml(Jackson 依赖,必须)

如果你是Maven 项目,加上这个依赖:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>staticclass</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>19</maven.compiler.source> <maven.compiler.target>19</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.1</version> </dependency> </dependencies> </project>

四、运行结果(你应该看到)

name = android, age = 11

反序列化成功


五、如果你用的是「你原来的非 static 版本」

class Test1 { class Test2 { } }

这一行一定会失败

mapper.readValue(json, Test1.Test2.class);

原因一句话总结:

反序列化环境没有Test1实例,无法构造非 static 内部类


六、这套代码在工程里的真实意义

你现在这套结构已经完全符合

  • Controller 返回 DTO

  • 接口 JSON 映射

  • RPC / MQ / 文件反序列化

错误代码如下:

package org.example; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; // 外部类(可以理解为一个命名空间) class Test1 { // ✅ static 内部类:可以被反射、反序列化独立创建 public class Test2 { private int age; private String name; // ✅ 反序列化必须要的无参构造 public Test2() { } public Test2(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void printInfo() { System.out.println("name = " + name + ", age = " + age); } } } public class Main { public static void main(String[] args) throws JsonProcessingException { // 模拟:来自网络 / 文件 / 接口 的 JSON 数据 String json = "{ \"age\": 11, \"name\": \"android\" }"; // 反序列化框架 ObjectMapper mapper = new ObjectMapper(); // ✅ 反序列化 static 内部类 Test1.Test2 t2 = mapper.readValue(json, Test1.Test2.class); // 验证结果 t2.printInfo(); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 23:25:02

AI Agent上线前必须检查的7项文档指标,少一项都可能崩溃

第一章&#xff1a;AI Agent上线前文档检查的重要性在将AI Agent部署到生产环境之前&#xff0c;系统化的文档检查是确保其稳定性、合规性和可维护性的关键环节。完整的文档不仅能帮助开发团队快速定位问题&#xff0c;还能为后续的审计、升级和知识传递提供坚实基础。确保接口…

作者头像 李华
网站建设 2026/4/2 15:37:47

地方2000坐标系的dwg如何导入Cesium

大家好&#xff0c;上一篇我们介绍了如何在Cesium当中导入标准的高斯克吕格投影的坐标系&#xff0c;我们先回忆一下上一篇中说道的DWG坐标系的三种情况&#xff1a; 1.国家2000坐标系 2.地方2000坐标系 3.没有对应位置信息的局部坐标系 我们已经看了第一种情况&#xff0c…

作者头像 李华
网站建设 2026/4/2 21:47:06

99% 的医疗 AI 项目忽视的隐私漏洞,你中招了吗?

第一章&#xff1a;医疗 AI 中隐私泄露的隐形危机在人工智能加速渗透医疗领域的当下&#xff0c;AI 模型通过分析电子病历、医学影像和基因数据显著提升了诊断效率。然而&#xff0c;这些高度敏感信息的集中处理也带来了严重的隐私风险。一旦模型训练或推理过程中缺乏有效的隐私…

作者头像 李华
网站建设 2026/3/24 6:56:36

多 Agent 系统在自动驾驶中的应用(融合架构设计与实战案例)

第一章&#xff1a;自动驾驶中多 Agent 融合架构的演进与挑战随着自动驾驶技术的发展&#xff0c;系统复杂度迅速提升&#xff0c;单一决策模型已难以应对城市开放环境中的动态交互场景。多 Agent 融合架构应运而生&#xff0c;通过将感知、规划、控制等模块解耦为多个协同工作…

作者头像 李华
网站建设 2026/4/1 3:05:10

为什么90%的电力公司都在布局图像识别巡检?3个真实案例告诉你

第一章&#xff1a;电力巡检智能化转型的必然趋势随着电网规模持续扩张与设备复杂度不断提升&#xff0c;传统依赖人工的电力巡检模式已难以满足现代电力系统对安全性、实时性与效率的严苛要求。在高海拔、强电磁、复杂地形等恶劣环境下&#xff0c;人工巡检不仅成本高昂&#…

作者头像 李华
网站建设 2026/3/31 14:56:49

测试机器人协作工作流

迈向智能化的软件测试新纪元 在当今快速迭代的软件开发环境中&#xff0c;软件测试从业者面临着日益增长的压力&#xff1a;需要在有限时间内确保产品的高质量交付&#xff0c;同时应对复杂多变的测试场景。传统手动测试方法已难以满足需求&#xff0c;而测试机器人&#xff0…

作者头像 李华