JSON中的stringify函数和parse函数

前言

JSON中的stringify和parse分别是用于将JavaScript转化为JSON对象和将JSON对象解析为JavaScript对象。

用法

1.stringify

语法:JSON.stringify(value [,replacer] [,space])

stringify方法除了可以序列化JS对象外,还接收两个参数,一个是过滤器(replacer),当replacer为数组时,表示筛选出满足这个数组中的属性的元素,当replacer为函数时,传入函数接收两个参数:键-值,根据键名可以知道如何处理序列化的对象中的属性值,且键名只能是字符串(当值并非键值对结构的值时,键名可以为空字符串); 一个表示在JSON字符串中是否保留缩进,该值可以为数字、非空字符串,且不能超过10个字符长度。

示例:(JS高级编程)

var book = {
    "title": "Professional Javascript",
    "authors": [
        "Nicholas C. Zakas"    
],
    edition: 3,
    year: 2011
};
var jsonText = JSON.stringify(book, function (key,value) {
    switch (key) {
        case "authors":
            return value.join(",")
        case "year":
            return 5000;
        case "edition":
            return undefined;  //通过返回undefined删除该属性
        default:          //必须有default
            return value
}
});

 序列化对象的顺序:

(1)如果存在toJSON()方法且能通过它取得有效值,则调用该方法,否则返回对象本身;

扫描二维码关注公众号,回复: 1456250 查看本文章

(2)提供的第二个参数,应用这个函数过滤器,传入函数过滤器的值是第一步返回的值;

(3)对第二步返回的每个值进行相应的序列化;

(4)如果提供第三个参数,则执行相应的格式化。

  2.parse

语法: JSON.parse(value [,reviver])

parse方法同stringify类似,也可以接受一个函数作为参数,如果还原函数返回undefined,则表示要从结果中删除相应的键值,若返回其他值,则将该值插入到结果中。

示例:

var book = {
    "title": "Professional Javascript",
    "authors": [
        "Nicholas C. Zakas"    
],
    edition: 3,
    year: 2011,
    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;
}
});
alert(bookCopy.releaseDate.getFullYear());

猜你喜欢

转载自www.cnblogs.com/alicsu/p/9131072.html