典型用法
接收 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"}]