当前位置: 首页 > news >正文

后端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(); } }
http://www.cnnetsun.cn/news/131798.html

相关文章:

  • 云边 Agent 延迟优化全攻略(99%工程师忽略的底层机制曝光)
  • 【物流运输Agent路线优化】:揭秘智能路径调整背后的算法黑科技
  • 终于搞懂了!React Agent的实现思路原来这么简单,核心就这3步!
  • FLORIS风电场仿真终极指南:10个核心技巧快速掌握工程尾流模型
  • 工业HMI常见故障及排查方法:黑屏、通信中断、操作无响应,新手别慌
  • 55页PDF信息系统项目管理师考神笔记
  • 工业HMI的发展趋势:智能化、一体化、移动化,新手该怎么跟上?
  • 【高频卫星信号处理突破】:3步实现Agent端低延迟响应
  • 联想拯救者BIOS隐藏功能一键解锁:3分钟搞定高级设置终极教程
  • 从功能测试到自动化转型:测试工程师的进阶之路
  • 测试与开发的协同工作模式:从对立到共生的范式演进
  • VCAM安卓虚拟相机:打造你的专属视频魔法师
  • 抢占本地生活服务市场 开源可定制的跑腿平台源码推荐
  • 【物流量子 Agent 成本优化】:揭秘降低运营开支的5大核心技术策略
  • 企业微信Webhook Java SDK:从零构建智能消息推送系统
  • 跨境独立站+海淘代购运营指南
  • OPC-UA客户端终极实战指南:从零掌握工业数据交互
  • 从对话到共情,元宇宙Agent如何实现自然交互?
  • Windows与Linux环境兼容难题,MCP PL-600 Agent如何无缝部署?
  • (AZ-500云Agent深度研究):从注册流程到策略执行的完整技术链剖析
  • CanOpenSTM32深度解析:STM32微控制器的CANopen协议栈架构揭秘
  • 深入NVIDIA Nemotron-3:高效准确的技术、工具与数据深度解析
  • 如何用LD2410雷达传感器实现3种智能人体检测方案
  • HTML极致压缩完整指南:如何快速提升网站加载速度
  • 量子计算如何彻底改变量子力学?
  • 管理制造企业的5种方法
  • 面向自然科学的人工智能建模方法
  • 基于VUE的南山社区图书管理系统[VUE]-计算机毕业设计源码+LW文档
  • 错过再等十年!车路协同信息同步技术即将迎来颠覆性变革,你准备好了吗?
  • 工业元宇宙渲染即将颠覆传统?5个关键趋势预示Agent可视化新纪元