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