博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON
阅读量:6804 次
发布时间:2019-06-26

本文共 3474 字,大约阅读时间需要 11 分钟。

hot3.png

  • stringify()和parse():分别是将JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生的JavaScript值.

 1.stringify():

var book = {                        title: "Professional JavaScript",                        authors: [                            "Nicholas C. Zakas"                        ],                        edition: 3,                        year: 2011                   };                var jsonText = JSON.stringify(book);        alert(jsonText);        //{"title":"Professional JavaScript","authors":["Nicholas C.Zakas"],"edition":3,"year":2011}        var bookCopy = JSON.parse(jsonText);

stringify()还接受一个数组作为第二个参数,数组的值对应将要序列化的对象属性

var book = {                        title: "Professional JavaScript",                        authors: [                            "Nicholas C. Zakas"                        ],                        edition: 3,                        year: 2011                   };        var jsonText = JSON.stringify(book, ["title", "edition"]);        alert(jsonText);        //{"title":"Professional JavaScript","edition":3}

stringify()还接受一个函数作为第二个参数:

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:                    return value;            }        });        alert(jsonText);        //{"title":"Professional JavaScript","authors":"Nicholas C. Zakas","year":5000}

2.toJSON():如果JSON.stringify()不能满足对某些对象进行自定义序列化的需求,可以给对象定义toJSON()方法.

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

3.parse()也可以接受一个函数作为第二个参数

var book = {                       "title": "Professional JavaScript",                        "authors": [                            "Nicholas C. Zakas"                        ],                        edition: 3,                        year: 2011,                        releaseDate: new Date(2011, 11, 1)                   };        var jsonText = JSON.stringify(book);        console.log(jsonText);        //{"title":"Professional JavaScript","authors":["NicholasC.Zakas"],"edition":3,"year":2011,"releaseDate":"2011-11-30T16:00:00.000Z"}                var bookCopy = JSON.parse(jsonText, function(key, value){            if (key == "releaseDate"){                return undefined;            } else {                return value;            }        });		        console.log("releaseDate" in bookCopy);//false        console.log(bookCopy);///*Array(1)0:"Nicholas C. Zakas"length:1__proto__:Array(0)edition:3title:"Professional JavaScript"year:2011*/

 

转载于:https://my.oschina.net/langgege/blog/1083548

你可能感兴趣的文章
工厂方法模式(java,c++,objective-c)
查看>>
CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
查看>>
内核同步之自旋锁与读写自旋锁
查看>>
python读取大文件
查看>>
百度官方WordPress收录插件
查看>>
gitlab 的 CI/CD 配置管理 (二)
查看>>
you may safely reboot your system
查看>>
SCP报错
查看>>
mysql(六)
查看>>
安保方案
查看>>
linux 日期时间计算
查看>>
华为93系统交换机配置跨×××路由和跨×××策略路由
查看>>
无限极分类,把子集数组压到父集数组的一个子项下面,用于在前台模板更好的循环显示...
查看>>
Axis --SOAP引擎
查看>>
解决XenDesktop启动后无法加载picagina.dll文件
查看>>
linux进程管理、任务管理
查看>>
VMware出现的问题(网络)
查看>>
大话数据库编程规范
查看>>
我的友情链接
查看>>
自己收集的golang书籍
查看>>