1. 程式人生 > >JavaScript高階程式設計讀書筆記之JSON

JavaScript高階程式設計讀書筆記之JSON

JSON(JavaScript Object Notation)JavaScript物件表示法。JSON是JavaScript的一個嚴格的子集,利用了JavaScript中的一些模式來表示結構化資料。關於JSON,最重要的是理解它是一種資料格式,不是一種程式語言。雖然具有相同的語法形式,但JSON並不從屬於JavaScript。而且,並不是只用JavaScript才使用JSON,很多語言都有對JSON的解析器和序列化器。JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式,是理想的資料交換格式。同時,JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON資料不須要任何特殊的 API 或工具包。

語法

簡單值

最簡單的JSON形式就是簡單值。

這是JSON表示數值5的形式,類似表示字串:

JavaScript與JSON表示字串的最大區別在於,JSON字串必須使用雙引號。

物件

JavaScript的物件字面量:

在JSON中的物件要給屬性加引號,實際上JavaScript的物件字面量完全可以寫成如下形式:

JSON表示上述物件:

區別:(1)沒有宣告變數(JSON中沒有變數的概念)(2)沒有末尾的分號(因為這不是JavaScript語句,所以不需要分號),JSON中的物件的屬性名任何時候都必須加上雙引號。

陣列

JSON中的第二種複雜資料型別是陣列,JSON中陣列採用的就是JavaScript中的陣列字面量形式。例如:


JavaScript中陣列字面量

JSON

同樣要注意,JSON陣列也沒有變數和分號。也可以把陣列和物件結合起來,託福網路課程通過巢狀的方式可以構成更復雜的資料集合。物件和陣列通常是JSON中的最外層形式。

解析與序列化

JSON之所以流行是因為可以把JSON資料結構解析為有用的JavaScript物件。與XML資料結構要解析成DOM文件而且從中提取資料極為麻煩相比,JSON可以解析為JavaScript物件的優勢極其明顯。

JSON物件

早期的JSON解析器基本上就是使用JavaScript的eval()函式(eval() 函式可計算某個字串,並執行其中的的 JavaScript 程式碼。)。由於JSON是JavaScript語法的子集,因此eval()函式可以解析、

新加坡留學解釋並返回JavaScript物件和陣列。

JSON物件有兩個方法:stringify()和parse()。在最簡單的情況下,這兩個方法分別用於把JavaScript物件序列化為JSON字串和把JSON字串解析為原生的JavaScript值。例如:

預設情況下,JSON.stringify()輸出的JSON字串不包含任何空格字元或者縮排。

雖然book與bookcopy具有相同的屬性,但它們是兩個獨立的、沒有任何聯絡的物件。

序列化選項

JSON.stringify()還可以接受另外兩個引數。第一個引數是過濾器,可以是一個數組,也可以是一個函式;第二個引數是一個選項,表示是否在JSON字串中保留縮排。

toJSON()方法

有時候,JSON.stringify()方法還是不能滿足對某些物件進行自定義序列化的需求,可以給物件定義toJSON()方法,返回其自身的JSON資料格式。

解析選項

JSON.parse()方法也可以接受引數,該引數是一個函式,將在每個鍵值對上呼叫:

JSON是一個輕量級的資料格式,可以簡化表示複雜的資料結構的工作量。原生的JSON物件也得到了很多瀏覽器的支援,,比如IE8+,Firefox3.5+,Chrome等。