什么是JSON
- JSON是一种数据交换格式,数据格式是一种在不同平台间传递数据的文本格式。JSON的全称是JavaScript Object Notation(JavaScript对象表示法),表示法的意思是,用于表示数字或单词等数据的字符系统。
JSON语法
- 名称—值对(其中值可以是字符串、数字、布尔值[小写]、对象、数字、null[小写])
例如:{"name":"Lily"}
在这里要注意尽量不要使用空格和特殊字符如果想使用多单词进行命名,尽量使用驼峰命名法,同时名称和值对是字符串时要被双引号包裹(值对中出现双引号时要用反斜杠进行转义)。
多个名称—值对使用逗号隔开,例如:
{"name":"Lily","age":19}
JSON文件类型和媒体类型
- 文件类型的扩展名:.json
媒体类型:application/json
JSON中的安全问题
JSON只是文本,它本身没有威胁
在JSON中不要使用顶级数组(存在于JSON名称—值对之外的位于文档最顶层的JSON数组),顶级数组是合法的JS脚本,它可以用<script>标签(<script>标签不受跨域的限制)链接并使用。
对于不想公开的信息,仅允许使用POST请求(GET请求把信息直接接到URL后面,这样的方式非常不安全)
仅使用JSON.parse()来解析JSON数据
JSON的序列化和反序列化
例子:创建一个XMLHttpRequest对象,并让它从指定地址中获取JSON数据
var myXMLHttpRequest=new XMLHttpRequest(); var url="http://api.openweathermap.org/data/2.5/waether?lat=35&lon=139"; myXMLHttpRequest.onreadystatechange=function(){ if(myXMLHttpRequest.readyState===4&myXMLHttpRequest.status===200){ var myObject=JSON.pares(myXMLHttpRequest.responseText);//反序列化 将文本转换成对象的过程 var myJSON=JSON.stringify(myObject);//序列化 将对象转换成文本的过程 } } myXMLHttpRequest.open("GET",url,true); myXMLHttpRequest.send();
反序列化
- var myObject=JSON.pares(myXMLHttpRequest.responseText)
由于JSON一开始还不是对象,所以使用JSON.parse()使其变为真正的对象(JSON意为JS对象表示法,当它以JSON形式存在时,字面上表示的是以文本形式表示的一个对象)
使用JQuery中jQuery.parseJSON解析JSON
var myName=jQuery.parseJSON({"name":"Lily"}")
序列化
var myJSON=JSON.stringify(myObject)