大家好,我是IT修真院成都分院第5期的学员,一枚正直纯洁善良的web程序员
一.背景介绍:
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。
终于,在2002年的一天,道格拉斯·克罗克福特(Douglas Crockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式。
由于JSON非常简单,很快就风靡Web世界,并且成为ECMA标准。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。
二.知识剖析
1.JSON语法:
数据键值对中
数据由逗号分割
大括号保存对象
中括号保存数组
2.JSON值
数字(整数/浮点数)
字符串(双引号)
布尔值
数组
对象
null
3.实例
嵌套使用:
4.转义概述:
为什么需要转义?在js中我们使用的js对象进行处理,但是在与后端数据交换的时候,我们发送规定的json格式的字符串,所以在给后端发送或接受数据的时候,需要
{name:"myname",password:123456} <–>"{"name":"myname","password":123456}"
其中json字符串转js对象,调用parse方法:
js对象= JSON.parse(json字符串);
js对象转json字符串,调用stringify方法:
json字符串= JSON.stringify(js对象);
三.常见问题
在json字符串转换成对象,还有eval_r('('+json字符串+')')这个方法,但是在对目标数据进行读取时,可能会出现一些意外的错误:
四.解决方案
原因:eval_r获取的json对象的值中,如果有执行代码,也将照样执行!所以若不能保证数据的安全性,不要使用eval_r方法进行转义。
五.编码实战
一个简单的JSON数据发送应用的例子:
六.拓展思考
我们常看到{name:"myname",password:123456}和{"name":"myname","password":123456}这样两种格式,即js对象和json,然而js对象和json有什么不一样的地方?
(答案在参考文献三处)
七.参考文献
参考一:百度百科
参考三:json属性名必须加引号的讨论
参考四:廖雪峰博客
八.更多讨论
问题1:JSON键值对中的键可以是数字么(王帅)
回答1:可以,但是会损耗性能(翟金超)
问题2:JSONP是个啥(韩阳)
回答2:Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。 (张珺琢)
问题3:使用AJAX传递JSON数据有什么需要注意的(先小波)
回答3:注意请求头 应为 application/json (张珺琢)
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
戳我注册~