[javascript] JSON簡介

來源:互聯網
上載者:User

可能有人看到這個標題就嘿嘿一笑,JSON我還不知道麼!

雖然我們經常使用JSON,但是很多人還是容易混淆Javascript Object和JSON

 

JSON,是一種是一種輕量級的資料交換格式,他的全名是JavaScript Object Notation(JavaScript對象標記法),屬於ES3標準的一個子集。

由於JSON的易用性,現在流行與各個領域出現了各種變體。在我們熟知的AJAX中,X所代表的XML基本已經被JSON代替。由於跨瀏覽器擷取跨域資料JSONP也是非常好的一種解決方案。WEB開發中基本免不了要與JSON打交道。現實中很多人分不清楚什麼是javascript object 什麼是JSON。

1.JSON的格式非常嚴格,JSON與Object相比就想是html對xhtml。

一個標準的JSON資料

{"a":"1"}

  JSON資料只能是純文字!鍵和值都必須用(" ")雙引包裹,js的Object 鍵可以不用這樣處理,值如果不是字串可以不這樣處理。

//注意這些都不是JSON
{'a':1}{'a':'1'}{a:1}

  

2.既然JSON只能儲存純文字,對應js的就是字串。那麼我們要把js對象處理成為JSON的話怎麼辦呢。

其實每個JS的原生類都有(ES6 Function以添加)toString()這樣的方法,能不能用麼。複雜類型如果調用這個方法會返回自身的值

[1,2,3,4].toString(); //"1,2,3,4"
({a:1}).toString(); //"[object Object]"

使用這個會得到一個這樣的結果,如果我們把他們存入cookie或者localStorage,再次取出對象化這顯然不是正確結果。

JSON對象上有兩個靜態方法,parse stringify

parse:負責把JSON資料轉為js對象

stringify:負責吧js對象字串化

3.parse把字串對象化有很多種選擇 eval('('+data+')'), new Function('return '+data)();

鑒於安全性,推薦使用第二種方法

4. stringify把對象字串化,目前還沒有快速的方法,這個過程可以看做是[1,2,3,4] 給數組兩邊加雙引。

5.JSON已被IE8所原生支援,低版本的瀏覽器也有解決方案。

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

JSON之父,做的JSON擴充。JSON只能儲存純文字,局限性還是顯而易見的。JSON的另一個變種BSON (Binary JSON),他支援JSON沒有的一些資料類型,如Date和BinData類型,MongoDB使用他來儲存資料和網路交換資料。

 

 

JSON校檢:http://jsonlint.com/

JSON官網:http://json.org/json-zh.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.