@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 查询参数或表单数据。

相关推荐
SL_staff1 分钟前
JVS-APS的7个刚性约束设计:从无限产能幻觉到可执行排产的工程实践
java·spring cloud·全栈
代码山河1 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
Escalating_xu3 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
程序猿乐锅3 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
Java后端的Ai之路3 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
AntsData4 小时前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat4 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
最强小杰4 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
Flynn Liang4 小时前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
灿飞4 小时前
Kotlin与Java虚拟机六:基础与类型系统:一切皆对象,但对象有代价
java·kotlin