SpringMVC接收json数组对象

来源:互联网 发布:淘宝网宝贝分类怎么弄 编辑:程序博客网 时间:2024/05/01 00:05

最近帮一个妹子解决一个需求,就是前台使用ajax传三个相同的对象,再加一个form表单对象。然后遇到各种问题,终于解决了,@RequestBody接收Json对象字符串 ​以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端...

 前端

<span style="font-size:18px;">$(function() {$(".test").click(function() {var url = "${base}/ajax/my/msg/test";var obj1 = {"name":"zhangsan","age":"23"};var obj2 = {"name":"zhangsi","age":"33"};var arr = [];arr.push(obj1);arr.push(obj2);var abc = {"p":"pppp"};$.post(url, {arr : JSON.stringify(arr), abc: JSON.stringify(abc)}, function(data) {if (data == "success") {alert("success");} else {alert("fail");}});});})</span>


后端

@RequestMapping(value = "/ajax/my/msg/test", method = RequestMethod.POST)@ResponseBodypublic String test(@RequestParam(value="arr") String[] arr, @RequestParam(value="abc") String abc) {return "success";}
这样传就没问题,还有一个例子:

jquery

<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);     }

以上大家可以试试



0 0
原创粉丝点击