尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

SpringMVC @RequestBody接收Json对象字符串

SpringMVC @RequestBody接收Json对象字符串 前言在 Spring MVC 开发中很多开发者对RequestBody注解的使用存在误解特别是关于它接收的数据类型。本文将详细解释RequestBody的工作原理并提供完整的前后端代码示例。1. 常见误解与正确理解误解很多开发者认为RequestBody直接接收一个 JSON 对象。事实RequestBody实际上接收的是 JSON 格式的字符串而不是 JavaScript 对象。Spring MVC 的HttpMessageConverter如MappingJackson2HttpMessageConverter会将这些 JSON 字符串反序列化为 Java 对象。2. 前端 AJAX 请求的正确配置要让前端正确发送 JSON 数据到后端需要配置以下关键参数dataType: json- 告诉 jQuery 期望服务器返回 JSON 格式的数据contentType: application/json- 设置请求的内容类型为 JSONdata: JSON.stringify(data)- 将 JavaScript 对象转换为 JSON 字符串JavaScript 代码示例script typetext/javascript $(document).ready(function() { var saveDataAry []; var data1 {userName: test, address: gz}; var data2 {userName: ququ, address: gr}; saveDataAry.push(data1); saveDataAry.push(data2); $.ajax({ type: POST, url: user/saveUser, dataType: json, contentType: application/json, data: JSON.stringify(saveDataAry), success: function(data) { console.log(保存成功, data); }, error: function(xhr, status, error) { console.error(保存失败, error); } }); }); /script3. 后端 Spring MVC 控制器实现后端使用RequestBody注解来接收前端发送的 JSON 数据Spring 会自动将其转换为对应的 Java 对象。Java 控制器代码示例RestController RequestMapping(/user) public class UserController { PostMapping(/saveUser) ResponseBody public ResponseEntityString saveUser(RequestBody ListUser users) { try { userService.batchSave(users); return ResponseEntity.ok(用户保存成功); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) .body(保存失败: e.getMessage()); } } // User 实体类 public static class User { private String userName; private String address; // 省略 getter 和 setter 方法 public String getUserName() { return userName; } public void setUserName(String userName) { this.userName userName; } public String getAddress() { return address; } public void setAddress(String address) { this.address address; } } }4. 关键注意事项JSON.stringify() 的重要性必须使用JSON.stringify()将 JavaScript 对象转换为 JSON 字符串否则 Spring 无法正确解析。Content-Type 设置必须设置contentType: application/json否则 Spring 可能无法识别请求体格式。支持的数据类型RequestBody可以接收单个对象、对象列表、Map 等多种复杂数据结构。错误处理建议在后端添加适当的异常处理并返回有意义的错误信息。5. 总结正确使用RequestBody的关键在于理解它接收的是 JSON 字符串而非 JavaScript 对象。前端需要通过JSON.stringify()进行转换并设置正确的 Content-Type。掌握了这一原理后前后端数据交互将变得更加顺畅。通过本文的示例代码您可以快速实现 Spring MVC 中 JSON 数据的正确传输和接收避免常见的调试困扰。
返回列表