JSON:讓數(shù)據(jù)傳輸更優(yōu)雅
在東南亞海灘的陽(yáng)光下,時(shí)而有一些貝殼、手工藝品等迷人的商品吸引著你。然而,語(yǔ)言的障礙有時(shí)會(huì)成為購(gòu)買商品的阻礙。不得不用手比劃以及嘗試各種辦法來(lái)進(jìn)行交流。幸運(yùn)的是,人們找到原始溝通的技巧,讓彼此都能接受的信息交流方式:在沙灘上用腳畫數(shù)字。

商家在沙灘上細(xì)心繪制商品的價(jià)格,游客仔細(xì)觀察,并以圖形的方式表達(dá)自己的意愿。如果商家同意,他會(huì)點(diǎn)頭或用手勢(shì)表示接受;如果不同意,他會(huì)擦掉所畫的數(shù)字,并用新的數(shù)字來(lái)表示自己的心理價(jià)位。通過(guò)幾輪互動(dòng),雙方逐漸接近對(duì)價(jià)格的共識(shí),最終達(dá)成交易,這一切既有趣又高效。

在編程中,前后端為了確保雙方能夠順利傳遞信息,需要約定一種信息交換的方式。其中JSON作為一種輕量級(jí)、易讀寫的數(shù)據(jù)格式,就像在沙灘上畫數(shù)字一樣,成為了前后端信息交互的默契方式。通過(guò)約定好的JSON數(shù)據(jù)結(jié)構(gòu),請(qǐng)求和響應(yīng)雙方能夠更加高效地交換信息,實(shí)現(xiàn)信息的無(wú)縫傳遞。
那么,JSON就是信息交換所使用的的一種數(shù)據(jù)格式。
常見(jiàn)的數(shù)據(jù)交互的格式
常見(jiàn)的數(shù)據(jù)交互格式包括純文本、XML、JSON等不同結(jié)構(gòu),讓我們分別來(lái)看一下它們之間的區(qū)別。
1.? 純文本格式
????●?豎線分割的(姓名|性別|地址|年齡|手機(jī)號(hào))
? ? ●?逗號(hào)分割的(姓名,性別,地址,年齡,手機(jī)號(hào))
2.? XML格式
3.? JSON格式
各種格式的對(duì)比
1.? 文本格式
??? a. ?優(yōu)點(diǎn):內(nèi)容簡(jiǎn)潔,傳輸數(shù)據(jù)量少
??? b. ?缺點(diǎn)1:無(wú)法適應(yīng)復(fù)雜的業(yè)務(wù)變化,例如后端將電話與年齡調(diào)換位置,前端如果不調(diào)整數(shù)據(jù)就會(huì)錯(cuò)亂
??? c. ?缺點(diǎn)2:不支持有層級(jí)結(jié)構(gòu)的,層級(jí)結(jié)構(gòu)下面會(huì)展開(kāi)講解
?? ?d. ?缺點(diǎn)3:如果數(shù)據(jù)中包含豎線,解析時(shí)就會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)亂,例如“張三|男|沙陽(yáng)路18號(hào)北京科技職業(yè)學(xué)院內(nèi)|23|13333335555”中的地址信息改為“張三|男|沙陽(yáng)路18號(hào)北京科技職業(yè)學(xué)院內(nèi)-服務(wù)樓2|3|4層|23|13333335555”,解析時(shí)就會(huì)多出來(lái)很多個(gè)字段
2.? xml格式
??? a. ?優(yōu)點(diǎn)1:格式清晰,順序可調(diào)整,后端新增項(xiàng)也不影響前端
??? b. ?優(yōu)點(diǎn)2:支持層級(jí)結(jié)構(gòu)
??? c. ?優(yōu)點(diǎn)3:數(shù)據(jù)內(nèi)容與標(biāo)簽相同時(shí)可進(jìn)行轉(zhuǎn)義
? ? d. ?缺點(diǎn)1:數(shù)據(jù)傳輸量大,是文本的好幾倍,屬性描述字段需要有開(kāi)始和結(jié)束標(biāo)簽,例如:“<name>張三</name>”
3.? json格式
??? a. ?優(yōu)點(diǎn)1:格式清晰,順序可調(diào)整,后端新增項(xiàng)不會(huì)影響影響前端
??? b. ?優(yōu)點(diǎn)2:支持層級(jí)結(jié)構(gòu)(后面展開(kāi)說(shuō))
??? c. ?優(yōu)點(diǎn)3:數(shù)據(jù)內(nèi)容與標(biāo)簽相同時(shí)可進(jìn)行轉(zhuǎn)義
??? d. ?優(yōu)點(diǎn)4:數(shù)據(jù)傳輸量適當(dāng),屬性描述字段不需要有閉合標(biāo)簽,例如:“name:"張三"”
展開(kāi)說(shuō)說(shuō)JSON?
JSON,即JavaScript Object Notation,直譯是js對(duì)象標(biāo)記。是一種輕量級(jí)的數(shù)據(jù)交換格式,它由鍵值對(duì)組成,用于表示結(jié)構(gòu)化的數(shù)據(jù)
既然咱們展開(kāi)說(shuō)就說(shuō)的直白一點(diǎn),JSON的是由js當(dāng)中的對(duì)象數(shù)據(jù)類型演化而來(lái),用于描述某種對(duì)象的屬性和值的,并且具有上級(jí)結(jié)構(gòu),為了方便傳輸,把這種數(shù)據(jù)改造為字符串,誒,這不就來(lái)了嗎,js對(duì)象數(shù)據(jù)類型如下:
但,這是js的對(duì)象數(shù)據(jù)類型,數(shù)據(jù)類型本質(zhì)是內(nèi)存中存儲(chǔ)數(shù)據(jù)的方式,我們不可能把內(nèi)存?zhèn)鬏斀o后臺(tái)。

不能傳輸內(nèi)存,那就轉(zhuǎn)為字符串傳遞唄,按照對(duì)象數(shù)據(jù)類型的這個(gè)結(jié)構(gòu),變?yōu)樽址袷降?,這多清晰明了,數(shù)據(jù)量也不是很大,又能很好兼顧層級(jí)結(jié)構(gòu)(省市縣const addr),說(shuō)干就干,于是我們轉(zhuǎn)為下面這個(gè)樣子:
JSON的組成
????●?大括號(hào) {}:用于表示對(duì)象的開(kāi)始和結(jié)束,對(duì)象是由一組無(wú)序的鍵值對(duì)組成的。
????●?方括號(hào) []:用于表示數(shù)組的開(kāi)始和結(jié)束,數(shù)組是由一組有序的值組成的。??
????●?冒號(hào) ::用于分隔鍵和值,將鍵與對(duì)應(yīng)的值關(guān)聯(lián)在一起。
????●?逗號(hào) ,:用于分隔數(shù)組或?qū)ο笾械牟煌I值對(duì)或值,將它們分開(kāi)。
????●?雙引號(hào) " 或單引號(hào) ':用于包圍字符串,表示字符串的開(kāi)始和結(jié)束。
????●?反斜杠 \:用于轉(zhuǎn)義特殊字符,確保特殊字符的正確解析。
寫到最后:JSON的優(yōu)雅之處
????●?數(shù)據(jù)體積:JSON通常比XML更小巧。由于JSON采用了簡(jiǎn)潔的語(yǔ)法,不需要像XML那樣添加大量的標(biāo)簽和屬性,因此JSON的數(shù)據(jù)體積相對(duì)較小。這使得JSON在網(wǎng)絡(luò)傳輸中消耗的帶寬更少,有利于提高數(shù)據(jù)傳輸?shù)男省?/p>
????●?語(yǔ)法復(fù)雜性:相比較而言,XML的語(yǔ)法相對(duì)復(fù)雜一些。XML需要使用起始標(biāo)簽和結(jié)束標(biāo)簽來(lái)包裹數(shù)據(jù),而JSON只需要使用花括號(hào) {} 和方括號(hào) [] 就可以表示對(duì)象和數(shù)組。這使得JSON的語(yǔ)法更加簡(jiǎn)潔和易讀。
????●?解析效率:由于JSON的語(yǔ)法相對(duì)簡(jiǎn)單,它的解析速度通常比XML更快。這對(duì)于大規(guī)模數(shù)據(jù)的處理和解析非常重要,尤其在需要實(shí)時(shí)響應(yīng)的應(yīng)用場(chǎng)景下。
????●?兼容性:JSON在前端和后端的兼容性較好。幾乎所有主流編程語(yǔ)言都有JSON的解析和序列化庫(kù),這使得JSON在前后端交互時(shí)更為便捷。
????●?可讀性:JSON相對(duì)于XML更易讀寫。JSON的結(jié)構(gòu)類似于JavaScript對(duì)象,使得開(kāi)發(fā)者能夠更直觀地理解數(shù)據(jù)結(jié)構(gòu),便于調(diào)試和開(kāi)發(fā)。
????●?擴(kuò)展性:盡管XML在一些特定領(lǐng)域具有更好的擴(kuò)展性,但對(duì)于一般的樹(shù)形數(shù)據(jù)結(jié)構(gòu),JSON的擴(kuò)展性也是足夠的。JSON支持嵌套對(duì)象和數(shù)組,可以靈活地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
????綜上所述,JSON在處理省市縣和汽車等樹(shù)形數(shù)據(jù)結(jié)構(gòu)時(shí)具有更小的數(shù)據(jù)體積、更簡(jiǎn)潔的語(yǔ)法、更快的解析效率和更好的兼容性等優(yōu)勢(shì)。這些優(yōu)勢(shì)使得JSON成為處理樹(shù)形數(shù)據(jù)結(jié)構(gòu)的首選數(shù)據(jù)格式,尤其在現(xiàn)代Web應(yīng)用和移動(dòng)應(yīng)用中廣泛應(yīng)用。然而,對(duì)于一些特定需求,XML仍然可能是更好的選擇,比如需要更復(fù)雜結(jié)構(gòu)和更強(qiáng)的擴(kuò)展性的場(chǎng)景。
- End -