在新項(xiàng)目中,除了一些框架所依賴的配置文件使用XML外,基本沒(méi)有使用XML。JSON基本替代了原來(lái)XML在程序內(nèi)的位置。在以前,我們不愿意使用一種私有的格式,于是選擇了XML。選擇XML的理由,可能是大家都用它,所以我們也用它。
XML 是一種很好的技術(shù),但是目前的情況來(lái)看,XML被濫用了,SOAP是XML被濫用的一種典型,程序內(nèi)部的表示使用XML也是濫用的一種典型。看到的一種情況,一個(gè)對(duì)象toString使用XML格式輸出,導(dǎo)致日志文件十分羅嗦,調(diào)試時(shí),在watch窗口中看到一大堆<tag>。
在新項(xiàng)目中,認(rèn)真考慮這種情況,找到了另外一種選擇,那就是JSON。選擇JSON的理由很充分:
1、JSON的解釋性能要比XML要好,要簡(jiǎn)潔緊湊。
2、可讀性要比XML好。JSON本身就是JavaScript的語(yǔ)法,和程序員的思維,而非文檔編寫(xiě)的思維。
3、JavaScript原生支持,客戶端瀏覽器不需要為此使用額外的解釋器,在web環(huán)境中使用特別合適。
在java中使用json,目前需要注意一些情況:
1、目前開(kāi)源的JSON-LIB代碼質(zhì)量不好,最好是在此基礎(chǔ)之上修改一個(gè)版本,或者自己重新開(kāi)發(fā)一個(gè)版本。
2、使用new Date的方式替代JSON-LIB中的{year:2007, month:12, ....}之類的方式
3、JSON-LIB中,object的propertyName在輸出的時(shí)候,都帶上"",例如{"name": "溫少"}, 其中name是的雙引號(hào)是不必要的,在輸出時(shí)應(yīng)該判斷,不需要的就是就不加上"",減少網(wǎng)絡(luò)流量。
4、JSON的解釋器中,應(yīng)該支持簡(jiǎn)單的表達(dá)式,例如new Date()、new Date(2939234723)之類的,這使得JSON的表達(dá)能力會(huì)更強(qiáng)一些。
5、JSON應(yīng)該分兩種,一種只支持簡(jiǎn)單格式,類似開(kāi)源的JSON-LIB,一種是通過(guò)JavaScript解釋器來(lái)實(shí)現(xiàn)的。后者在程序中傳輸數(shù)據(jù)時(shí),能夠得到更強(qiáng)大的表達(dá)能力,但是也會(huì)導(dǎo)致安全問(wèn)題,需要慎重使用。