JSON是javascri Object Notatio(javascript對象表示法)的簡稱。它是一種輕量級的數據交換格式。
JSON是javascript的一個嚴格的子集,是基於javascript的對象字面量表示法來表示結構化的數據。
1.JSON語法
支持三種數據類型,注意:不支持變量、函數、對象實例。
1.簡單值:可以表示字符串、數字、布爾值、以及null。注意不支持undefined。字符串必須使用雙引號。
2.對象:表示無序的鍵值對。對象沒有變量和分號。而且對象的屬性值必須加雙引號。
example:
{ "name":"tian" "age":21, "school":"xidian" }
3.數組:有序的值列表。數組沒有變量和分號。
[{ "title":"hello"}, "name",21,true ]
二、JSON對象的方法
1.stringify():把JSON對象序列化爲JSON字符串
該方法接收三個參數;
a.要序列化的JSON對象,必須的
b.指定序列化的方式。是個過濾器。可以是數組,也可以是函數(成爲過濾函數)
若爲數組,則篩選出數組中列出的屬性。
若爲函數,該函數接收兩個參數,屬性名key,屬性值value。根據函數的返回值決定序列化的結果。對象的每個屬性都會經過過濾器。
如果返回值是undefined,則忽略相應的屬性。
c.表示是否在JSON字符串中保留縮進
若爲數字,縮進的字符數,結果也會包含換行符。
若爲字符串,將其作爲縮進字符。
d. 由於JSON.stringify()方法有時不能滿足某些對象序列化的而要求。有些時候,會給對象添加toJSON方法,返回其自身的JSON數據格式。
toJSON()可以作爲函數過濾器的補充。
總結:JSON.stringify()的序列化對象的順序如下:
- 如果javascript對象存在toJSON()方法,而且該方法能取得有效值,則調用該方法。否則,返回javascript對象對象本身。
- 如果有第二個參數,應用這個函數過濾器。傳入過濾器的值是第一步返回的值。
- 對第二步中返回的每個值進行相應的序列化。
- 如果有第三個參數,執行相應的格式化。
2.parse():把javascript字符串解析爲JSON對象
該方法接收三個參數;
a.要解析的javascript字符串,必須的
b.還原函數,可選。應該用在每個鍵值對。