JSON拾遗
2015-08-01 17:45
555 查看
最近开始翻《JavaScript高级程序设计》,其实很多大师级人物都推荐这本书为JavaScript入门级读物。因为第20章 JSON篇幅最小,而且以前也写过一篇JSON的总结JSON简介以及用法汇总,正好先拿来查漏补缺下。
其实除了JSON本身的定义外,跟JSON有关的有就两个函数,可以将JSON数据类型和字符串之间进行转换。JSON的语法不再多述,字符串要用
JSON有个
有时候,JSON.stringify还是不能满足对某些对象进行自定义序列化的需求。在这些情况下,可以给对象自定义
查看控制台,输出的东西其实是
如果存在
如果提供了第二个参数,应用这个函数过滤器,传入函数过滤器的值是第一步返回的值
对第二步返回的每个值进行相应的序列化
如果提供了第三个参数,执行相应的格式化
其实除了JSON本身的定义外,跟JSON有关的有就两个函数,可以将JSON数据类型和字符串之间进行转换。JSON的语法不再多述,字符串要用
双引号引起来,而且不能有
undefined作为value值。
JSON有个
stringify方法,可以将JSON数据转化为字符串,它的第二个参数可以是数组或者方法,具体使用方法可以参照前文,而第三个参数可以控制缩进,由于第三个参数也可以是字符串,以前我以为是可以增加key的前缀,我错了,它是纯粹当缩进使用的,为了使得JSON数据看起来清晰:
var obj = {name: 'hanzichi', age: 10}; var str = JSON.stringify(obj, null, '--'); console.log(str);
有时候,JSON.stringify还是不能满足对某些对象进行自定义序列化的需求。在这些情况下,可以给对象自定义
toJSON()方法,返回其自身的JSON数据格式。可以为任何对象添加toJSON方法:
var person = { name: 'hanzichi', age: 10, toJSON: function() { return this.name; } } var str = JSON.stringify(person); console.log(str);
查看控制台,输出的东西其实是
"hanzichi",如果代码返回修改成
this.age,就会是
10,完全被JSON序列化为一个简单的字符串。你也可以让这个方法返回understand,此时如果包含它的对象嵌入在另一个对象中,会导致它的值变成null,而如果它是顶级对象,结果就是understand。
toJSON()可以作为函数过滤器的补充,因此理解序列化的内部顺序十分重要。假设把一个对象传入JSON.stringify(),序列化该对象的顺序如下:
如果存在
toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,返回对象本身。
如果提供了第二个参数,应用这个函数过滤器,传入函数过滤器的值是第一步返回的值
对第二步返回的每个值进行相应的序列化
如果提供了第三个参数,执行相应的格式化
相关文章推荐
- JSON的解析
- JavaScript学习要点(十三)
- js预加载/延迟加载
- 浅谈JavaScript中setInterval和setTimeout的使用问题
- 访问WEB-INF下的jsp页面以及利用session访问webroot下的页面
- HTML——JavaScript简介
- JavaScript读取并解析XML文件
- Jsoncpp使用详解以及链接问题解决
- Web列表分页--(单页web)容易上手的方法
- [LeetCode][JavaScript]Valid Anagram
- javascript 方法 / 绑定 解绑事件
- template.js插件--好用的模板插件
- webstrom 安装教程 配置js调试
- JS 解析JSON
- 第九天 JSON解析、集合
- JS JSON
- JavaScript中的枚举类型
- js(严格)校验身份证号_easyCheckIdcard
- JavaScript 如何计算2个时间差 工作时间为8小时
- js数组去重的几种方法