string字符串轉(zhuǎn)json 有Protocol buffer這種輕便的序列化反序列化工具,Json為什么還會(huì)大量使用?
有Protocol buffer這種輕便的序列化反序列化工具,Json為什么還會(huì)大量使用?原因很簡(jiǎn)單:1,json是JavaScript原生支持的,沒(méi)有外部依賴(lài)2,json具有人眼可讀性3,開(kāi)發(fā)人員偷
有Protocol buffer這種輕便的序列化反序列化工具,Json為什么還會(huì)大量使用?
原因很簡(jiǎn)單:
1,json是JavaScript原生支持的,沒(méi)有外部依賴(lài)
2,json具有人眼可讀性
3,開(kāi)發(fā)人員偷懶
關(guān)于序列化的協(xié)議和框架,估計(jì)都可以出一本百科全書(shū)了,熱門(mén)一點(diǎn)的如:
xml、json、bson、Hessian、protocol buffers...
還有很多小眾冷門(mén)的,排名不分先后。
雖然有各種各樣的協(xié)議和框架,但序列化本質(zhì)上可以分為兩種:
- 二進(jìn)制協(xié)議,如 bson、Hessian、protocol buffers等,將數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制形式。
- 文本協(xié)議,如 xml,json 等,這類(lèi)協(xié)議將數(shù)據(jù)轉(zhuǎn)換為文本(字符串)的形式。
二進(jìn)制協(xié)議的優(yōu)點(diǎn)是體積小效率高,例如protocol buffers可以用將數(shù)據(jù)壓縮到位(bit),序列化和反序列化的性能也很好,非常適用于各種系統(tǒng)通訊和接口調(diào)用。
但問(wèn)題也在這里,二進(jìn)制數(shù)據(jù)幾乎沒(méi)有可讀性,所以在開(kāi)發(fā)和調(diào)試程序時(shí),對(duì)程序員來(lái)說(shuō)就比較痛苦,尤其是頻繁變化的數(shù)據(jù)結(jié)構(gòu)。
文本協(xié)議則剛好相反,數(shù)據(jù)體積大,性能差,卻能滿(mǎn)足可讀性要求。例如我們可以輕松看懂一段json,或者人肉構(gòu)造數(shù)據(jù)。 對(duì)于快速開(kāi)發(fā)和web開(kāi)發(fā)來(lái)說(shuō),可以提高開(kāi)發(fā)效率,開(kāi)發(fā)人員不用過(guò)多關(guān)注協(xié)議或者框架,專(zhuān)注業(yè)務(wù)。
我的觀點(diǎn)是:
1,對(duì)于業(yè)務(wù)穩(wěn)定,性能要求極高的場(chǎng)景,優(yōu)先使用 protocol buffers 等二進(jìn)制序列化協(xié)議
2,對(duì)于性能要求不高,業(yè)務(wù)變化頻繁的場(chǎng)景,優(yōu)先使用 json、xml 等文本協(xié)議