JSON.stringify()方法详解。

参数

JSON.stringify(obj,过滤器,是否保留缩进)。
过滤器:可以是数组 || 方法。
是否保留缩进:num || string

过滤器

json对象如下:

var json = {
    "title": "Professional JavaScript", 
    "authors": [ "Nicholas C. Zakas" ], 
    edition: 3, 
    year: 2011,
}

第一种

JSON.stringify(json,['title','year']);
// {"title":"Professional JavaScript","year":2011}

第二种

JSON. stringify(book,(key,val) => {
    switch(key){
        case 'authors' :
            return val.join(',');
        case 'edition' :
            return 123131231;
        default :
            return val;
    }
});

// {"title":"Professional JavaScript","authors":"Nicholas C. Zakas","edition":123131231,"year":2011}

字符串缩进

第一种

JSON.stringify(book,null,4)

结果如下:

{
    "title": "Professional JavaScript",
    "authors": [
        "Nicholas C. Zakas"
    ],
    "edition": 3,
    "year": 2011
}

第二种

JSON.stringify(book,null,'----');

结果如下:

{
----"title": "Professional JavaScript",
----"authors": [
--------"Nicholas C. Zakas"
----],
----"edition": 3,
----"year": 2011
}

toJSON()方法

把json对象改成如下:

var book = { 
    "title": "Professional JavaScript", 
    "authors": [ "Nicholas C. Zakas" ], 
    edition: 3, 
    year: 2011,
    toJSON : function () {
        return this.title;
    }
}; 

这时候在执行:

JSON.stringify(book,null,4)
JSON.stringify(book,null,'----');
JSON.stringify(json,['title','year']);
JSON. stringify(book,(key,val) => {
    switch(key){
        case 'authors' :
            return val.join(',');
        case 'edition' :
            return 123131231;
        default :
            return val;
    }
});

结果:

"Professional JavaScript";
"Professional JavaScript";
"Professional JavaScript";
"Professional JavaScript";
"Professional JavaScript";