典型用法
接收 JSON 请求体并转换为 Java 对象
@PostMapping("/users")
public String createUser(@RequestBody User user) {
return "User created: " + user.getName();
}
// 客户端请求示例(JSON):
{
"name": "Alice",
"email": "alice@example.com"
}
// Spring 自动使用 HttpMessageConverter(如 Jackson)将 JSON 转换为 User 对象。
接收原始 JSON 字符串(String 类型)
如果你不想立即反序列化对象,也可以直接接收原始 JSON,适用于需要手动解析或转发的场景。
@PostMapping("/data")
public String receiveJson(@RequestBody String rawJson) {
return "Received JSON: " + rawJson;
}
接收 Map 结构(灵活处理动态字段)
当请求结构不确定时,可以使用 Map 接收数据
@PostMapping("/map")
public String handleMap(@RequestBody Map<String, Object> data) {
return "Received name: " + data.get("name");
}
// 请求示例:
{
"name": "Bob",
"age": 30
}
结合 @Valid 进行参数校验
你可以配合 @Valid 注解对请求体进行校验,需要在 User 类中添加 JSR 380 校验注解(如 @NotBlank, @Email 等)
@PostMapping("/validate")
public String validateUser(@Valid @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
return "Validation failed";
}
return "Valid user: " + user.getName();
}
接收嵌套结构(List / 复杂对象)
@PostMapping("/batch")
public String createUsers(@RequestBody List<User> users) {
return "Total users: " + users.size();
}
// 请求示例:
[
{"name": "Alice"},
{"name": "Bob"}
]