@RequestBody 注解处理的数据类型

@RequestBody 注解主要用于处理 HTTP 请求体(Request Body)中的数据,它能够将请求体中的内容(如 JSON、XML 等格式)转换为 Java 对象。它支持多种数据类型,包括但不限于以下几种:

‌1、单个对象(POJO)‌:

这是最常见的用法。你可以定义一个 Java 类(POJO),@RequestBody 会将请求体中的 JSON 数据自动映射到该类的属性上。

例如,定义一个 User 类,包含 name 和 age 属性,前端发送的 JSON 数据 { "name": "张三", "age": 25 } 会被自动转换为 User 对象。

2、 ‌集合(List、Set 等)‌:

@RequestBody 可以绑定到集合类型,接收一个包含多个对象的 JSON 数组。

例如,接收一个 JSON 数组 [{ "name": "张三", "age": 25 }, { "name": "李四", "age": 30 }],可以使用 @RequestBody List<User> users 来接收。

3、 ‌数组‌:

与集合类似,@RequestBody 也可以绑定到数组类型。

例如,接收一个 JSON 数组 [1, 2, 3],可以使用 @RequestBody int[] numbers 来接收。

‌Map‌:

@RequestBody 可以绑定到 Map 类型,适用于接收动态键值对的数据。

例如,接收一个 JSON 对象 { "key1": "value1", "key2": "value2" },可以使用 @RequestBody Map<String, Object> data 来接收。

4、 ‌字符串(String)‌:

虽然不常见,但 @RequestBody 也可以接收原始的字符串数据,此时请求体中的内容会被直接读取为字符串。

例如,接收纯文本或非结构化数据,可以使用 @RequestBody String rawContent。

5、 ‌其他复杂类型‌:

可以接收包含嵌套对象、复杂集合结构等的 JSON 数据,只要 Java 类的结构与 JSON 结构匹配即可。

关键点‌:

‌Content-Type‌:@RequestBody 通常用于处理 application/json、application/xml 等非表单格式的数据。如果请求头中的 Content-Type 设置为 application/x-www-form-urlencoded,则通常使用 @RequestParam 来接收。

‌消息转换器(Message Converters)‌:Spring 会根据请求的 Content-Type 自动选择合适的消息转换器(如 Jackson 用于 JSON,JAXB 用于 XML)来将请求体数据反序列化为 Java 对象。

‌HTTP 方法‌:@RequestBody 主要用于 POST、PUT 和 PATCH 请求,因为这些请求具有请求体。

‌与 @RequestParam 的区别‌:@RequestBody 接收请求体中的数据,而 @RequestParam 接收 URL 查询参数或表单数据。

相关推荐
慧都小项2 小时前
Java开发工具MyEclipse发布v2026.1:支持Java25和Spring Boot4、AI功能升级
java·spring boot·myeclipse
L0CK2 小时前
实战篇 01. 达人探店 - 发布探店笔记学习文档
java
独断万古他化2 小时前
【抽奖系统开发实战】Spring Boot 项目的用户模块设计:注册登录、权限管控与敏感数据加密
java·spring boot·redis·后端·mvc·jwt·拦截器
一直学习的程序小白2 小时前
java进阶-优化GC垃圾回收机制
java·开发语言·jvm
安卓程序员_谢伟光2 小时前
如何用MAT(Eclipse Memory Analyzer)
java·ide·eclipse
喵喵蒻葉睦2 小时前
力扣 hot100 和为K的子数组 哈希&前缀和
java·数据结构·算法·leetcode·前缀和·哈希算法
G探险者2 小时前
DDD开发模式说明
java·运维·数据库
Amour恋空2 小时前
SpringBoot使用SpringAi完成简单智能助手
java·spring boot·后端
lang201509282 小时前
18 Byte Buddy 进阶:揭秘方法委托中的“歧义解析”机制
java·byte buddy