news 2026/4/15 20:16: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/4/15 4:32:09

Agent如何预判断货危机?深入拆解库存预警算法背后的3个数据逻辑

第一章&#xff1a;Agent如何预判断货危机&#xff1f;深入拆解库存预警算法背后的3个数据逻辑在现代供应链系统中&#xff0c;智能Agent通过实时分析多维数据流&#xff0c;实现对断货风险的提前预警。其核心依赖于三大数据逻辑&#xff1a;需求趋势预测、库存消耗速率监控与供…

作者头像 李华
网站建设 2026/4/14 16:37:56

网络安全AI Agent从入门到精通,收藏这一篇就够了!

随着数字化转型加速与网络威胁复杂度的指数级增长&#xff0c;安全运营模式也从单品防御、规则驱动逐步迈向数据驱动与人工智能赋能的智能防御时代。各大网络安全厂商推出自己的安全垂域大模型如&#xff1a;奇安信QAX-GPT安全机器人、深信服安全GPT、360安全Agent、天融信天问…

作者头像 李华
网站建设 2026/4/12 4:20:07

如何有效规避企业微信的自动化风控检测

一、 引言&#xff08;Introduction&#xff09; 残酷现实&#xff1a; 企业微信拥有极其严密的风控系统。一旦识别到非人类操作&#xff08;频率过快、操作过于精准、行为过于机械&#xff09;&#xff0c;轻则限制功能&#xff08;如无法打招呼、无法加群&#xff09;&#x…

作者头像 李华
网站建设 2026/4/14 0:40:46

开源与商业AI测试工具的深度解析与选型指南

AI驱动测试变革的时代背景随着人工智能技术渗透到软件开发生命周期&#xff0c;测试领域正经历从脚本化到智能化的范式转移。AI测试工具通过机器学习、自然语言处理及计算机视觉等技术&#xff0c;实现了测试用例自动生成、智能缺陷预测、自愈性测试执行等突破性功能。面对市场…

作者头像 李华
网站建设 2026/4/12 20:54:47

打造高效同城配送服务,PHP开源跑腿小程序系统

温馨提示&#xff1a;文末有资源获取方式系统核心功能模块一览&#xff1a;用户端小程序&#xff1a;提供简洁流畅的下单界面&#xff0c;支持“帮取”和“帮送”两种核心服务模式。用户可根据实际需求&#xff0c;灵活填写取件、送件地址、物品信息及备注。集成在线支付功能&a…

作者头像 李华
网站建设 2026/4/10 18:41:32

mysql 解决不能添加emoji 表情和特殊字符问题

1、修改数据库字符集&#xff08;可选但推荐ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2、修改表字符集ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;3、确保特定字段也是 utf8mb4…

作者头像 李华