news 2026/6/10 21:49:19

后端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/6/10 9:04:30

图Agent性能突然下降?DP-420环境下最易忽略的3个资源争用问题曝光

第一章&#xff1a;图Agent性能突然下降的现象与背景近期&#xff0c;多个使用图Agent&#xff08;Graph Agent&#xff09;进行知识图谱推理与动态查询的服务系统报告了响应延迟显著上升、任务失败率增加的现象。该问题并非局限于单一部署环境&#xff0c;而是广泛出现在云原生…

作者头像 李华
网站建设 2026/6/10 9:06:38

解锁晶圆蓝膜摆盘机核心功能,赋能半导体高效生产

在半导体封装测试生产线中&#xff0c;深圳市科睿达自动化设备有限公司的晶圆蓝膜摆盘机的功能直接决定了生产效率和产品良率。一款高性能的晶圆蓝膜摆盘机&#xff0c;往往具备多维度的核心功能&#xff0c;能够适配不同规格、不同类型的芯片生产需求。下面&#xff0c;我们就…

作者头像 李华
网站建设 2026/6/10 10:46:12

【MCP PL-600 Agent兼容性避坑宝典】:资深架构师亲授10年经验总结

第一章&#xff1a;MCP PL-600 Agent兼容性概述MCP PL-600 Agent 是现代云平台中用于实现跨系统监控与策略执行的核心组件&#xff0c;其设计目标在于确保在异构环境中具备高度的兼容性与稳定性。该代理支持多种操作系统、运行时环境及通信协议&#xff0c;能够在物理机、虚拟机…

作者头像 李华
网站建设 2026/6/10 10:23:10

实测GPT5.2打工人版的十种用法,我觉得Gemini 3 Pro要笑到肚子痛了

最近&#xff0c;随着GPT-5.2的发布&#xff0c;大家对这一版本的期待简直可以用“顶天立地”来形容。这款新发布的版本号称是“打工人版”&#xff0c;具备了更强的任务处理能力&#xff0c;迅速成为许多人办公和日常工作的得力助手。从生成文档、分析数据到写代码&#xff0c…

作者头像 李华
网站建设 2026/6/10 10:44:51

CompileFlow架构深度解析:从解释执行到编译执行的范式革命

CompileFlow架构深度解析&#xff1a;从解释执行到编译执行的范式革命 【免费下载链接】compileflow &#x1f3a8; core business process engine of Alibaba Halo platform, best process engine for trade scenes. | 一个高性能流程编排引擎 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/6/10 10:46:41

ZNB20罗德与施瓦茨 ZNB20 网络分析仪20GHZ

罗德与施瓦茨 ZNB20网络分析仪频率9KHZ-20GHZ&#xff0c;R&S ZNB20甚至在100kHz的起始测量频率就提供了很大的动态范围。这使得它可以对低频特性很重要的宽带待测件或元器件进行测量。测试401个点只需要5ms的测试时间&#xff0c;可以保证在生产中具有很高的吞吐率。宽达7…

作者头像 李华