欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON扫盲-JSON和spingmvc中的json格式传递

程序员文章站 2022-04-29 14:06:59
...

1、JSON(JavaScript Object Notation, JS 对象标记) 是一种格式!格式!格式!它的形式是字符串!字符串!字符串!

1)json的属性名必须加双引号,因为json是一种被大多数语言所接受的格式,每种语言都有自己的关键字,为了防止解析时冲突?(参考:http://blog.csdn.net/goskalrie/article/details/52151175

2)傻傻分不清楚的json对象,真面目:严格的说,JavaScript中只有一个JSON对象,即全局JSON对象,只有stringify()和parse()两个方法,初此之外,js中任何对象都不是JSON对象,即便是使用stringify()方法序列化得到的也不是,因为JSON只是一种格式!平时所说的JSON对象,是符合JSON格式的js对象

3)区分js对象和JSON

var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串
4)js对象和JSON互转

要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
要实现从 JSON 转换为对象,使用 JSON.parse() 方法:

var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
5)如何表示数组

JSON表示数组和js一样,使用[ ]表示

6)如何表示对象

JSON表示对象和js一样,使用{ }表示,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

2、springmvc中的son格式传递,参考(http://www.cnblogs.com/andyfengzp/p/6184752.html

1)传json格式的js对象

//前端代码
function test () {
    var param = {username : "yitop"};

    $.ajax({
        timeout : 20000,
        type : "POST",
        dataType : "JSON",
        url : "/user/userRole.htm",
        data : param,
        success : function(data){
            alert(data);
        }
        //注意:这里不能加下面这行,否则数据会传不到后台
        //contentType:'application/json;charset=UTF-8',
    });
}
//后端 controller
@RequestMapping(value = "userRole", method = RequestMethod.POST)
@ResponseBody
public List<Role> selectRoles(String username) throws WebTransException {
    
    /* 逻辑代码 */

}

2)传递json字符串

//前端
function icheckDelete(url){
    var parms = {
        list : array //这是个数组
    };

    $.ajax({
        dataType: "JSON",
        contentType:'application/json;charset=UTF-8',//关键是要加上这行
        traditional:true,//这使json格式的字符不会被转码
        data: JSON.stringify(parms),
        type: "DELETE", 
        timeout: 20000,
        url: url,
        success : function () {
            alert("删除成功!");
        },
        error : function (data){
            alert(data.responseText);
        }
    });  
}

//后端 controller
@RequestMapping(value = "deleteList", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@RequestBody DeleteListRequest request) throws WebTransException{

    /* 逻辑代码 */

    return "success";
}
//form
public class DeleteListRequest {
    List<Map<String, String>> list = new ArrayList<>();
    public List<Map<String, String>> getList() {
        return list;
    }
    public void setList(List<Map<String, String>> list) {
        this.list = list;
    }
}