SpringMVC @RequestBody接收Json对象字符串

来源:互联网 发布:俄罗斯经济崩溃 知乎 编辑:程序博客网 时间:2024/06/14 03:45

以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

JavaScript 代码:

复制代码
<script type="text/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(saveData),             success:function(data){                                                    }          });     });  </script> 
复制代码

Java代码

    @RequestMapping(value = "saveUser", method = {RequestMethod.POST }})     @ResponseBody      public void saveUser(@RequestBody List<User> users) {          userService.batchSave(users);     } 
使用@ResponseBody注解返回的对象就传入Object参数内。若返回的对象为已经格式化好的json串时,不使用@RequestBody注解,而应该这样处理:
1、response.setContentType("application/json; charset=UTF-8");
2、response.getWriter().print(jsonStr);
直接输出到body区,然后的视图为void。

0 0
原创粉丝点击