更新時(shí)間:2023-03-09 來源:黑馬程序員 瀏覽量:
JSON 的英文全稱是 JavaScript Object Notation,即“JavaScript 對象表示法”。簡單來講,JSON 就是 Javascript 對象和數(shù)組的字符串表示法,它使用文本表示一個 JS 對象或數(shù)組的信息,因此,JSON 的本質(zhì)是字符串。
作用:JSON 是一種輕量級的文本數(shù)據(jù)交換格式,在作用上類似于 XML,專門用于存儲和傳輸數(shù)據(jù),但是 JSON 比 XML 更小、更快、更易解析。
現(xiàn)狀:JSON 是在 2001 年開始被推廣和使用的數(shù)據(jù)格式,到現(xiàn)今為止,JSON 已經(jīng)成為了主流的數(shù)據(jù)交換格式。
JSON的兩種結(jié)構(gòu)
JSON 就是用字符串來表示 Javascript 的對象和數(shù)組。所以,JSON 中包含對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)的相互嵌套,可以表示各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
對象結(jié)構(gòu):
對象結(jié)構(gòu)在 JSON 中表示為 { } 括起來的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)為 { key: value, key: value, … } 的鍵值對結(jié)構(gòu)。其中,key 必須是使用英文的雙引號包裹的字符串,value 的數(shù)據(jù)類型可以是數(shù)字、字符串、布爾值、null、數(shù)組、對象6種類型。
{ name: "zs", 'age': 20, "gender": '男', "address": undefined, "hobby": ["吃飯", "睡覺", '打豆豆'] say: function() {} }
{ "name": "zs", "age": 20, "gender": "男", "address": null, "hobby": ["吃飯", "睡覺", "打豆豆"] }
數(shù)組結(jié)構(gòu):數(shù)組結(jié)構(gòu)在 JSON 中表示為 [ ] 括起來的內(nèi)容。數(shù)據(jù)結(jié)構(gòu)為 [ "java", "javascript", 30, true … ] 。數(shù)組中數(shù)據(jù)的類型可以是數(shù)字、字符串、布爾值、null、數(shù)組、對象6種類型。
[ "java", "python", "php" ] [ 100, 200, 300.5 ] [ true, false, null ] [ { "name": "zs", "age": 20}, { "name": "ls", "age": 30} ] [ [ "蘋果", "榴蓮", "椰子" ], [ 4, 50, 5 ] ]
JSON語法注意事項(xiàng):
屬性名必須使用雙引號包裹,字符串類型的值必須使用雙引號包裹。
JSON 中不允許使用單引號表示字符串,JSON 中不能寫注釋。
JSON 的最外層必須是對象或數(shù)組格式,不能使用 undefined 或函數(shù)作為 JSON 的值。
JSON 的作用:在計(jì)算機(jī)與網(wǎng)絡(luò)之間存儲和傳輸數(shù)據(jù)。
JSON 的本質(zhì):用字符串來表示 Javascript 對象數(shù)據(jù)或數(shù)組數(shù)據(jù)
要實(shí)現(xiàn)從 JSON 字符串轉(zhuǎn)換為 JS 對象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}') //結(jié)果是 {a: 'Hello', b: 'World'}
要實(shí)現(xiàn)從 JS 對象轉(zhuǎn)換為 JSON 字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}) //結(jié)果是 '{"a": "Hello", "b": "World"}'