JSON語法以及json與JavaScript物件的轉換
阿新 • • 發佈:2019-01-08
JSON是JavaScript的一個嚴格的子集,利用了JavaScript中的一些模式來表示結構化資料。理解JSON,最重要的是理解它是一種資料格式,而不是一種程式語言。JSON雖然利用了JavaScript的一些模式,但JSON並不從屬於JavaScript,很多程式語言都可以用JSON來傳遞資料。
JSON的語法:
學習JSON的語法,你只需知道以下三種類型的值。
1.簡單值:也就是JavaScript中的字串、數值、布林值、null。
①,JSON不支援JavaScript的undefined。
在實際應用中,json更多地用來表示更復雜的資料結構,簡單值只是構成整個json資料的基本單元。
2.物件:和JavaScript物件很相似,但是也有幾個注意點。
①,json中物件的屬性需加上引號。(這是手工編寫json時最容易犯的錯)
②,json物件沒有宣告。
③,末尾沒有分號。
舉個例子:
上面的json物件中有兩個name屬性,但由於它們分屬於不同的物件,所以沒有問題,但是同一個物件中決不能出現同名屬性。javascript物件字面量: var JSobject = { name :"wlk", age : 22, school : { name : "muc", locaton : "BeiJing" } }; json物件: { //沒有宣告 "name" :"wlk", "age" : 22, //json物件的屬性必須加上引號 "school" : { "name" : "muc", "locaton" : "BeiJing" } } //末尾沒有分號
3.陣列 :JSON的第二種複雜的資料型別就是陣列,同樣要注意JSON陣列沒有變數和分號。物件和陣列通常是JSON資料格式的最外層形式。
比如:
[ //以陣列為最外層形式 { "name":"wlk", "age":22 }, { "name":"wang", "school":{ "name":"MUC", "location":"Beijing" } }, ]
json文字與js物件的轉換:(詳解請解讀《JavaScript高階程式設計3》第565頁)
ECMAScript5對解析json的行為進行了規範,定義了全域性物件JSON。
全域性JSON物件有兩個方法:stringify()和parse()。
這兩個方法就能完成JavaScript物件與json文字之間的轉換。
該方法可接受三個引數:
第一個引數是需要序列化的JavaScript物件。
第二個引數為可選引數,它是個過濾器,可以是陣列或函式。
第三個引數也為可選引數,用於控制結果中的縮排和空白符。傳第三個引數時,第二個引數也要傳,如果沒有過濾條件就傳null。
有些物件會定義有toJSON()方法,返回其自身的JSON資料格式。例如原生Date物件。我們當然也可以給自定義物件新增toJSON()方法。
json文字解析為JavaScript物件:JSON.parse()。
該方法可接受兩個引數:
第一個是要解析的json文字。
第二個是一個函式。它會對json資料的每個鍵值對做一些處理。比如日期字串經常要使用它進行日期的轉換。