SpringMVC @RequestBody 接收Json 对象字符串
@RequestBody接收的是一个json对象的字符串,而不是一个接送对象,但是ajax请求中往往传的是json对象,通过使用JSON.stringify(data)的方式就能将对象变为字符串,同时ajax请求的时候也要指定dataType: “json”,contentType:”application/json” 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
json对象和json字符串的js变化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":"23"}' 结果: JSON.parse(str)
Object age: "23" name: "huangxiaojian" __proto__: Object
注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。 stringify()用于从一个对象解析出字符串,如 var a = {a:1,b:2} 结果: JSON.stringify(a) "{"a":1,"b":2}"
|
Ajax传递json字符串到后台
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <script type="text/javascript"> $(document).ready(function(){ var DataArray=[]; var data1={"userName":"wangkangning","address":"guangzhou"}; var data2={"userName":"wangchao","address":"chengdu"}; DataArray.push(data1); DataArray.push(data2); $.ajax({ type:"POST", url:"user/saveUser", dataType:"json", contentType:"application/json", data:JSON.stringify(DataArray), success:function(data){ } error:function() {alert("error");} }); }); </script>
|
RequestBody 接收Json字符串并绑定(相同名称进行绑定)
1 2 3 4 5 6 7 8 9 10 11 12 13
| @RequestMapping(value = "user/saveUser", method = RequestMethod.POST) @ResponseBody public void saveUser(@RequestBody List<User> users) { ObjectMapper mapper =new ObjectMapper(); for(int i=0;i<user.size();i++) { String json =mapper.writeValueAsString(users[i]); } User user = new User(); user = mapper.readValue(json,User.class); System.out.println(user); }
|