什么是JSON
- JSON是一種數(shù)據(jù)交換格式,數(shù)據(jù)格式是一種在不同平臺間傳遞數(shù)據(jù)的文本格式觉吭。JSON的全稱是JavaScript Object Notation(JavaScript對象表示法),表示法的意思是样漆,用于表示數(shù)字或單詞等數(shù)據(jù)的字符系統(tǒng)摊阀。
JSON語法
- 名稱—值對(其中值可以是字符串、數(shù)字、布爾值[小寫]绣版、對象、數(shù)字歼疮、null[小寫])
例如:{"name":"Lily"}
在這里要注意盡量不要使用空格和特殊字符如果想使用多單詞進行命名杂抽,盡量使用駝峰命名法,同時名稱和值對是字符串時要被雙引號包裹(值對中出現(xiàn)雙引號時要用反斜杠進行轉義)韩脏。
多個名稱—值對使用逗號隔開缩麸,例如:
{"name":"Lily","age":19}
JSON文件類型和媒體類型
- 文件類型的擴展名:.json
媒體類型:application/json
JSON中的安全問題
JSON只是文本赡矢,它本身沒有威脅
在JSON中不要使用頂級數(shù)組(存在于JSON名稱—值對之外的位于文檔最頂層的JSON數(shù)組)杭朱,頂級數(shù)組是合法的JS腳本阅仔,它可以用<script>標簽(<script>標簽不受跨域的限制)鏈接并使用。
對于不想公開的信息弧械,僅允許使用POST請求(GET請求把信息直接接到URL后面八酒,這樣的方式非常不安全)
僅使用JSON.parse()來解析JSON數(shù)據(jù)
JSON的序列化和反序列化
例子:創(chuàng)建一個XMLHttpRequest對象,并讓它從指定地址中獲取JSON數(shù)據(jù)
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()使其變?yōu)檎嬲膶ο螅↗SON意為JS對象表示法羞迷,當它以JSON形式存在時,字面上表示的是以文本形式表示的一個對象)
使用JQuery中jQuery.parseJSON解析JSON
var myName=jQuery.parseJSON({"name":"Lily"}")
序列化
var myJSON=JSON.stringify(myObject)