ajax传输Object及@RequestBody的用法

通过ajax向后台传输object对象。

javascript

$.ajax({
    url:"rest/publicgarden/edit",
    type:"post",
    cache:false,
    dataType:"json",
    contentType:"application/json; charset=utf-8",
    data:JSON.stringify(oldValue),
    success:function(result){
        if (result)
            alertConfirm("修改成功");
        else
            alertView("修改失败");
    }
})

oldValue

JSON.stringify()

以将任意的JavaScript值序列化成符合JSON语法的字符串。

JSON.stringify({});                        // '{}'
JSON.stringify(true);                      // 'true'
JSON.stringify("foo");                     // '"foo"'
JSON.stringify([1, "false", false]);       // '[1,"false",false]'
JSON.stringify({ x: 5 });                  // '{"x":5}'

JSON.stringify({x: 5, y: 6});              
// '{"x":5,"y":6}' 或者 '{"y":6,"x":5}' 都可能

java

@RequestBody

@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: “json”,contentType:”application/json” 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

@RequestMapping(value = "/edit",method=RequestMethod.POST)
@ResponseBody
public boolean edit(@RequestBody Object value) {

    JSONObject jsonObj = JSONObject.fromObject(value);//将json字符串转换为json对象
    PublicGarden publicgarden = (PublicGarden) JSONObject.toBean(jsonObj,PublicGarden.class);//将建json对象转换为PublicGarden对象
    ipGardenServiceImpl.update(publicgarden);
    return true;
}

@RequestMapping(value = "saveUser", method = {RequestMethod.POST }}) 
@ResponseBody  
public void saveUser(@RequestBody List<User> users) { 
     userService.batchSave(users); 
} 

java与JSON相互转换详情请点击这里查看。

文章目录
  1. 1. javascript
    1. 1.1. JSON.stringify()
  2. 2. java
    1. 2.1. @RequestBody