十分鐘搞定JSON和JSON對象

JSON是JavaScript Object Notation的縮寫,中文譯為JavaScript對象表示法。用來作為數據交換的文本格式,作用類似於XML,而2001年Douglas Crockford提出的目的就是為了取代XML,它不是一種編程語言,僅用來描述數據結構。


1、JSON語法規則

JSON的語法可以表示以下三種類型的值:簡單值、JSON對象和數組。

(1)簡單值

簡單值使用與JavaScript相同的語法,可以在JSON中表示字元串、數值、布爾值和null。

// 簡單值n"Hello World!" // 字元串n99 // 數值ntrue // 布爾型nfalse // 布爾型nnullnn// 在JSON中不能使用的值nNaN // 數值不能是NaNnInfinity // 數值不能是Infinitynundefined // 在JSON也不可以使用JavaScript中的undefinednHello World! // 字元串必須使用雙引號表示,不能使用單引號n0x1 // 數值必須以十進位表示,不能使用十六進位n

(2)對象

對象是一組有序的鍵值對的數據組成的數據類型。鍵值對中,值可以是簡單值,也可以是對象和數組(數組也是用來表示JSON的數據類型,見接下來內容)。一般很多剛入門的同學都在JavaScript中使用JSON所以經常會和JSON對象混淆,要十分注意。

// 對象,對象的屬性名必須使用雙引號,值要是字元串也必須使用雙引號n{n "name": "Andy",n "age": 18,n "isStudent": true,n "isLeader": false,n "mark": null,n "school": {n "name": "BIT",n "region": "Beijing" // 這個地方不能有逗號,因為是對象的最後一個屬性成員n } // 這個地方也不可以有逗號,因為也是對象的最後一個屬性成員n}n

(3)數組

數組是由一組有序的數組組成的列表。在數組中,值可以是簡單值,也可以是對象和數組。記住,記住,再記住,在JSON中數組最後一個元素一定不要有逗號。

// 示例一n["Andy", "Ruby", "Danny", "Peter", "Lisa"]n// 示例二n[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]n// 示例三n[n {"name": "Andy", "age": 18},n {"name": "Ruby", "age": 18},n {"name": "Danny", "age": 20}n]n// 示例四n[n [0, 1, 2],n [3, 4, 5],n [6, 7, 8]n]n


2、JSON字元串和JSON對象

(1)JSON字元串

JSON字元串與普通的字元串沒有任何特殊的地方,但是之所以稱為JSON字元串是因為,這個字元串符合我們前面介紹的語法規則。

//JSON字元串nvar p ={"name":"Andy","gender":"男","age":"18"};nconsole.log(p); // {"name":"Andy","gender":"男","age":"18"}nalert(typeof(p));// stringn

(2)JSON對象

JSON對象主要是在JavaScript的說法。在面向對象編程中,類的實例化叫做對象,對象擁有不同的屬性,鍵值對就是對象的屬性和值。

// JSON對象nvar person={n "name":"Andy",n "gender":"男",n "age":"18"n}nconsole.log(person.name);// 在控制台輸出Andy,可以通過點運算直接訪問對象屬性nalert(typeof(person));// objectn

(3)JSON字元串和JSON對象互相轉換

JavaScript中有一個全局的對象,JSON。JSON中有兩個方法 stringify() 和 parse()。

JSON.parse() 把JSON字元串解析為JSON對象

//JSON字元串通過parse轉化為JSON對象nvar p ={"name":"Andy","gender":"男","age":"18"};nperson = JSON.parse(p)nconsole.log(person.name);// 在控制台輸出Andy,可以通過點運算直接訪問對象屬性nalert(typeof(person));// objectn

JSON.stringify() 用於把JSON對象序列化為JSON字元串。

//JSON對象通過stringify轉化為JSON字元串nvar person={n "name":"Andy",n "gender":"男",n "age":"18"n}nvar p = JSON.stringify(person)nconsole.log(p); // {"name":"Andy","gender":"男","age":"18"}nalert(typeof(p));// stringn

推薦閱讀:

The Story of Me Becoming A Front-End Developer in the Past Two Years
前端工程師有必要學習SSH嗎?
sublime text3側邊欄和標題欄這幾個地方的字體,字型大小怎麼調整啊?
前端資訊周報 3.13 - 3.19: WebVR來了!以及如何優化scroll事件性能

TAG:前端入门 | 前端工程师 | JSON |