js中JSON的使用

  json主要的优势就是格式精简,相比较xml的话。一般用来作为数据传输,前后端进行数据传递。

  现在流行的浏览器普遍支持JSON的两个方法,序列化和反序列化。

  1.   JSON.stringnify()

  2.   JSON.parse()

下边的示例就是这两个方法的常见用法。

注意一点:json这个两个方法,会忽视掉undefined的项目属性,比如key为test的项目被忽略掉。

var a;
var person = {
    "fullname" : "Mr Xi",
    "wife" : "Miss Peng",
    "children" : ["Xi1", "Xi2"],
    "age" : 53,
    "test" : a
};

console.log(a); // undefined
var str = JSON.stringify(person);// 通常序列化后,可以传到后台
console.log(str);// {"fullname":"Mr Xi","wife":"Miss Peng","children":["Xi1","Xi2"],"age":53} 

var jobj = JSON.parse(str);// 从后台传到前台后,进行解析
console.log(jobj);

 

很多时候,我们大多数忽视了这两个方法的第二个参数。第二个参数主要用于过滤作用(可以是数组,或者是函数)。

当为数组的时候,传递json对象的keys,传递了则包含这个属性,否则过滤掉。

当为函数的时候,函数有两个参数分别是key和value,针对自己的业务进行处理,return undefined则不包含,否则返回value。

var str1 = JSON.stringify(person, ["fullname", "children"]);
console.log(str1);// {"fullname":"Mr Xi","children":["Xi1","Xi2"]}

var str2 = JSON.stringify(person, function(k,v){
    if (k == "children"){
        v.push("Xi3");
        return v;
    } else if (k == "age"){
        return undefined;
    } else {
        return v;
    }
});
console.log(str2);
// {"fullname":"Mr Xi","wife":"Miss Peng","children":["Xi1","Xi2","Xi3"]}

 

 

 

 

  

posted @ 2016-01-05 18:07  根号五  阅读(1684)  评论(0编辑  收藏  举报