news 2026/5/1 8:13:53

后端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/5/1 0:22:18

强力突破百度网盘限速:Mac端开源插件完整解决方案

还在为百度网盘那蜗牛般的下载速度而苦恼吗&#xff1f;&#x1f62b; 作为Mac用户&#xff0c;你一定经历过重要文件下载到一半却因为限速而陷入漫长等待的窘境。传统的优化方法要么操作复杂&#xff0c;要么存在安全风险&#xff0c;而官方提供的极速下载试用更是转瞬即逝&am…

作者头像 李华
网站建设 2026/5/1 4:52:18

电力系统负荷预测新突破:Agent智能模型如何提升预测精度90%?

第一章&#xff1a;电力系统负荷预测新突破&#xff1a;Agent智能模型如何提升预测精度90%&#xff1f;在现代智能电网的运行中&#xff0c;电力负荷预测的准确性直接影响调度效率与能源成本。传统统计模型如ARIMA或SVM在面对非线性、高波动性的用电数据时表现受限。近年来&…

作者头像 李华
网站建设 2026/5/1 4:53:53

【元宇宙Agent交互升级指南】:掌握3种主流通信协议与状态同步模型

第一章&#xff1a;元宇宙 Agent 的交互逻辑 在元宇宙环境中&#xff0c;Agent&#xff08;智能体&#xff09;作为用户代理或自主实体&#xff0c;其核心功能依赖于复杂的交互逻辑。这些逻辑决定了 Agent 如何感知环境、处理信息并作出响应。一个典型的交互流程包含感知、决策…

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

螺杆空压机的 C01 故障排查及处理分析

很多用户在使用空压机的时候 经常会在面板上看到C01故障,停机 那么形成这个故障的原因,现在北岳空压机技术人员给大家分析一下首先螺杆空压机的 C01 故障多集中在供电、电机、设备负载及散热等核心运行环节&#xff0c;不同品牌机型对该故障的定义略有差异&#xff0c;但常见原…

作者头像 李华
网站建设 2026/5/1 4:53:55

探索性测试的思维与方法

在追求高度自动化和脚本化测试的今天&#xff0c;探索性测试&#xff08;Exploratory Testing&#xff09;作为一项强调测试者自主性与批判性思维的重要技能&#xff0c;正受到软件测试行业的重新审视。根据2024年国际软件测试认证委员会&#xff08;ISTQB&#xff09;的行业调…

作者头像 李华
网站建设 2026/5/1 4:53:24

抢占短剧新风口!一键搭建盈利的短剧付费小程序源码系统

温馨提示&#xff1a;文末有资源获取方式微短剧以其“短、平、快”、剧情高能“上头”的特点&#xff0c;迅速成为流量新贵。数据显示&#xff0c;头部平台单部微短剧播放量可超6亿&#xff0c;日活用户数以亿计&#xff0c;这背后蕴藏着巨大的商业潜力与变现空间。一个新的创业…

作者头像 李华