ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS学习笔记9_JSON

2021-04-12 13:02:33  阅读:148  来源: 互联网

标签:序列化 解析 对象 笔记 js parse JSON JS


摘抄自: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文件的简单翻译

参考资料:


 

标签:序列化,解析,对象,笔记,js,parse,JSON,JS
来源: https://www.cnblogs.com/smile-fanyin/p/14647457.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有