標籤:school 序列 簡單 class 程式設計語言 color ber span name
JSON是JavaScript Object Notation的縮寫,它是一種資料交換格式。
在JSON出現之前,大家一直用XML來傳遞資料。因為XML是一種純文字格式,所以它適合在網路上交換資料。XML本身不算複雜,但是,加上DTD、XSD、XPath、XSLT等一大堆複雜的規範以後,任何正常的軟體開發人員碰到XML都會感覺頭大了,最後大家發現,即使你努力鑽研幾個月,也未必搞得清楚XML的規範。
終於,在2002年的一天,道格拉斯·克羅克福特(Douglas Crockford)同學為了拯救深陷水深火熱同時又被某幾個巨型軟體企業長期愚弄的軟體工程師,發明了JSON這種超輕量級的資料交換格式。
道格拉斯同學長期擔任雅虎的進階架構師,自然鐘情於JavaScript。他設計的JSON實際上是JavaScript的一個子集。在JSON中,一共就這麼幾種資料類型:
- number:和JavaScript的
number完全一致;
- boolean:就是JavaScript的
true或false;
- string:就是JavaScript的
string;
- null:就是JavaScript的
null;
- array:就是JavaScript的
Array表示方式——[];
- object:就是JavaScript的
{ ... }表示方式。
以及上面的任意組合。
並且,JSON還定死了字元集必須是UTF-8,表示多語言就沒有問題了。為了統一解析,JSON的字串規定必須用雙引號"",Object的鍵也必須用雙引號""。
由於JSON非常簡單,很快就風靡Web世界,並且成為ECMA標準。幾乎所有程式設計語言都有解析JSON的庫,而在JavaScript中,我們可以直接使用JSON,因為JavaScript內建了JSON的解析。
把任何JavaScript對象變成JSON,就是把這個對象序列化成一個JSON格式的字串,這樣才能夠通過網路傳遞給其他電腦。
如果我們收到一個JSON格式的字串,只需要把它還原序列化成一個JavaScript對象,就可以在JavaScript中直接使用這個對象了。
序列化
讓我們先把小明這個對象序列化成JSON格式的字串:
1 var xiaoming = { 2 name: ‘小明‘, 3 age: 14, 4 gender: true, 5 height: 1.65, 6 grade: null, 7 ‘middle-school‘: ‘\"W3C\" Middle School‘, 8 skills: [‘JavaScript‘, ‘Java‘, ‘Python‘, ‘Lisp‘] 9 };10 11 JSON.stringify(xiaoming); // ‘{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}‘
要輸出得好看一些,可以加上參數,按縮排輸出:
1 JSON.stringify(xiaoming, null, ‘ ‘);
結果:
1 { 2 "name": "小明", 3 "age": 14, 4 "gender": true, 5 "height": 1.65, 6 "grade": null, 7 "middle-school": "\"W3C\" Middle School", 8 "skills": [ 9 "JavaScript",10 "Java",11 "Python",12 "Lisp"13 ]14 }
第二個參數用於控制如何篩選對象的索引值,如果我們只想輸出指定的屬性,可以傳入Array:
JS 中的 JSON