JavaScript对json数组的处理

最近项目中采用json数组进行前后端数据传输,前端不可避免的要涉及到对json数组的处理。于是总结了一下。

JSON对象有两个方法:stringify()和parse();前者把JavaScript对象序列化为JSON字符串,后者把JSON字符串解析为原生JavaScript值。

var jsonText=JSON.stringify(book);
var bookCopy=JSON.parse(jsonText);

序列化stringify()可以接受除需要序列化的JavaScript对象外额外两个参数。

  • 第二个参数(数组or函数)

(1). 数组

var jsonText=JSON.stringify(book,["title","edition"]);

第二个参数是一个数组,起过滤作用,因此返回结果中只包含这两个属性,["title":" ","edition":" "]。

var jsonText=JSON.stringify(book,function(key,value){
     switch(key){
         case "year":
             return 5000;
         case "edition":
             return undefined;
         default:
            return value;
      }
});

(2). 函数
第二个参数是一个函数,函数返回的值就是对应键的值。但如果返回的是undefined,那么相应属性会被忽略。

  • 第三个参数(数值or字符)

(1). 数值

var jsonText=JSON.stringify(book,null,4);

数值代表每个级别缩进的空格数,最大值为10,大于10时自动转换为10。
(2). 字符

var jsonText=JSON.stringify(book,null,"- -");

该字符串将在json字符串中用作缩进字符。长度不能超过10个字符长,超出时取前10个字符长。

toJSON()方法可以为任何对象添加toJSON方法。如:

var book={
    "title":"aaaa",
    "year":1111,
    toJSON:function(){
    return this.title;  
    }
}

对象序列化时先通过toJSON方法获取有效值。否则返回对象本身。

JSON.parse()可以接受除需要序列化的JavaScript对象外额外一个参数。
如:

var book={
    "title":"aaaa",
    "year":1111,
    releaseDate:new Date(2011,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;
    }
}

参考:JavaScript高级程序设计

你可能感兴趣的:(JavaScript对json数组的处理)