JSON在JavaScript中的进阶用法

JSON在JavaScript中的进阶用法

大家在工作中可能用JavaScript处理JSON格式的数据的时候肯定离不开JSON.parse()和JSON.stringify()这两个方法,说一下这两个方法的强大之处

总结自《JavaScript 高级程序设计》
  • 序列化为JSON字符串
var book = {
    title:"JSON JavaScript",
    authors:[
        "ldl"
    ],
    edition:2,
    year:2017
};
var jsonText = JSON.stringify(book);
以上就是我们平时最简单的序列化的用法

- 解析为原生JavaScript值

var jsText = JSON.parse(jsonText);
以上为最简单的解析用法

进阶用法

  • 序列化选项

    JSON.stringify()方法除了要序列化的JavaScript对象之外,还可以接受另外两个参数:一个过滤器(Function||Array),也叫过滤函数(replacer);一个保留缩进选项,show you the code:

var book = {
    title:"JSON JavaScript",
    authors:[
        "ldl"
    ],
    edition:2,
    year:2017
};
var jsonText = JSON.stringify(book,["title,edition"]);//数组:返回数组中包含的属性
var jsonText = JSON.stringify(book,function(key, value){//函数:过滤作用
    switch(key){
        case "authors":
            return value.join(",");
        case "year":
            return 9527;
        case "edition":
            return undefined;
        default:
            return value;
    }
},4);//缩进值最大为10,大于10时自动变为10,结果字符串会自动包含换行符。
  • 解析选项
    JSON.parse()方法也可以接受另一个参数,这个参数是一个函数,也叫做还原函数(reviver)与过滤器函数签名相同。
var book = {
    title:"JSON JavaScript",
    authors:[
        "ldl"
    ],
    edition:2,
    year:2017,
    releaseDate: new Date(2017, 11, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText,function(key, value){
    if(key =="releaseDate"){
        return new Date(value);
    } else {
        return value;
    }
});
alert(bookCopy.releaseDate.getFullYear());

小火鸡,看完有没有觉得这两个方法666啊,在你的下一段JavaScript代码里灵活运用吧!

你可能感兴趣的:(javascript)