JS學習筆記9_JSON

來源:互聯網
上載者:User

JS學習筆記9_JSON
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對象字面量類似,但 沒有變數聲明 沒有末尾分號 屬性名稱必須用雙引號包裹(很容易錯寫成單引號或者忘記用引號) 例如: {  "name" : "ayqy",  "sex" : "M",  "nextSibling" : {    "name" : "xxx",    "sex" : "M",    "nextSibling" : null  }}3.表示數組 與數組字面量類似,但 沒有變數聲明 沒有末尾分號 例如:  [3, 6, false, "ayqy", {"name" : "xxx", "age" : 18}]4.複雜資料結構 數組和對象之間可以通過嵌套來創造更複雜的資料結構,例如:  [  1,  {    "extra" : [      6,      {        "id" : 5,        "attr" : "value"      },      false    ],    "index" : 1001  },  2]3.序列化(js對象轉JSON) [IE8+]和其它主流瀏覽器有內建JSON對象,可以調用原生方法來序列化js對象:  JSON.stringify(obj);//按照預設規則序列化,值為undefined和值為函數的屬性將被忽略JSON.stringify(obj, arr/fun(key, value));//支援過濾一部分屬性(只保留arr中列出的屬性或者用fun來過濾)JSON.stringify(obj, null, num/strPrefix);//支援格式化,自動換行並每級縮排num個空格或者每級添加一個首碼串對於[IE7-]如何支援,我們稍後再議 4.解析(JSON轉js對象)  JSON.parse(str);//直接解析JSON.parse(str, fun(key, value));//按fun解析對於[IE7-]如何支援,我們稍後再議 5.跨瀏覽器的JSON序列化/解析 對於不支援JSON對象的瀏覽器可以用一個shim(一個小術語):   說白了就是個小型js庫(壓縮之後4KB而已),提供JSON解析和序列化功能。當然,也可以直接用JQuery 道格拉斯還提供了額外的JSON支援(除基本的stringify和parse外): json2.js: 如果不存在內建JSON對象的話,會給全域對象添個JSON屬性,屬性值是一個對象,有stringify和parse方法。parse用的是eval方法解析,還用了幾個Regex檢測,防止執行非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用來表示資料關係

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.