首页 / JSON / JS学习笔记9_JSON
JS学习笔记9_JSON
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JS学习笔记9_JSON,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2735字,纯文字阅读大概需要4分钟。
内容图文
摘抄自:https://www.cnblogs.com/ayqy/p/4426062.html
1.JSON概述
JavaScript Object Natation,js对象表示法,(像XML一样)是一种数据格式,它与js有相同的语法形式
P.S.一点小历史:JSON之父是道格拉斯,《JavaScript语言精粹》的作者,创造JSON的灵感来自js中的字面量表示法
2.JSON语法
1.表示简单值
例如3, “str”, null, false等等,不支持undefined,而且字符串必须用双引号(JSON里没有单引号表示字符串的用法,这与js不同)
2.表示对象
与js对象字面量类似,但
-
没有变量声明
-
没有末尾分号
-
属性名必须用双引号包裹(很容易错写成单引号或者忘记用引号)
例如:
1 2 3 4 5 6 7 8 9 |
{
?? "name" :? "ayqy" ,
?? "sex" :? "M" ,
?? "nextSibling" : {
???? "name" :? "xxx" ,
???? "sex" :? "M" ,
???? "nextSibling" :? null
?? }
}
|
3.表示数组
与数组字面量类似,但
-
没有变量声明
-
没有末尾分号
例如:
1 |
[3, 6,? false ,? "ayqy" , { "name" :? "xxx" ,? "age" : 18}]
|
4.复杂数据结构
数组和对象之间可以通过嵌套来创造更复杂的数据结构,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[
?? 1,
?? {
???? "extra" : [
?????? 6,
?????? {
???????? "id" : 5,
???????? "attr" :? "value"
?????? },
?????? false
???? ],
???? "index" : 1001
?? },
?? 2
]
|
3.序列化(js对象转JSON)
[IE8+]和其它主流浏览器有内置JSON对象,可以调用原生方法来序列化js对象:
1 2 3 |
JSON.stringify(obj); //按照默认规则序列化,值为undefined和值为函数的属性将被忽略
JSON.stringify(obj, arr/fun(key, value)); //支持过滤一部分属性(只保留arr中列出的属性或者用fun来过滤)
JSON.stringify(obj,? null , num/strPrefix); //支持格式化,自动换行并每级缩进num个空格或者每级添加一个前缀串
|
对于[IE7-]如何支持,我们稍后再议
4.解析(JSON转js对象)
1 2 |
JSON.parse(str); //直接解析
JSON.parse(str, fun(key, value)); //按fun解析
|
对于[IE7-]如何支持,我们稍后再议
5.跨浏览器的JSON序列化/解析
对于不支持JSON对象的浏览器可以用一个shim(一个小术语):
下载地址:https://github.com/douglascrockford/JSON-js/(道格拉斯自己捏的)
说白了就是个小型js库(压缩之后4KB而已),提供JSON解析和序列化功能。当然,也可以直接用JQuery
道格拉斯还提供了额外的JSON支持(除基本的stringify和parse外):
json2.js: 如果不存在内置JSON对象的话,会给全局对象添个JSON属性,属性值是一个对象,有stringify和parse方法。parse用的是eval方法解析,还用了几个正则表达式检测,防止执行非JSON代码。在现代浏览器中这个js文件啥也不做,原生支持优先。如果不是要支持[IE8-]的话,就不要用这个,也就是说这个文件并不是必须的。
json.js: 本文件包含json2.js的所有功能,还给Object的原型添了toJSONString方法和parseJSON方法,建议不要用。
json_parse.js: 本文件给了parse函数的另一种实现:用递归下降(P.S.语法分析器。。好吧,道格拉斯大爷战斗力略强)代替了eval函数
json_parse_state.js: 本文件给了parse函数的另一种实现:用状态机(P.S.。。。)代替了eval函数
cycle.js: 本文件有两个函数:JSON.decycle和JSON.retrocycle,用来消除/恢复JSON中的环和图结构,JSONPath用来表示数据关系
P.S.上面的是readme文件的简单翻译
参考资料:
-
php怎么解析JSON数据:前辈博文
-
JSON官方信息:http://www.JSON.org/
内容总结
以上是互联网集市为您收集整理的JS学习笔记9_JSON全部内容,希望文章能够帮你解决JS学习笔记9_JSON所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。