JSON和XML的對比分析?這個問題可能是我們?nèi)粘W習或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
創(chuàng)新新互聯(lián),憑借10余年的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作經(jīng)驗,本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計網(wǎng)站有上千案例。做網(wǎng)站建設(shè),選成都創(chuàng)新互聯(lián)公司。
下面舉一個簡單的 JSON 數(shù)據(jù)(140個字符):
{ "id": 123, "title": "Object Thinking", "author": "David West", "published": { "by": "Microsoft Press", "year": 2004 } }
同樣的數(shù)據(jù)在 XML 中會表示如下(167個字符):
Object Thinking David West Microsoft Press 2004
很容易看出其中的區(qū)別,前者更簡潔更容易理解,而且能在JavaScript 中能完美解析。所以,我們便可以簡單粗暴地放棄 XML 選擇 JSON 了嗎?誰還會需要已歷時15年的重量級語言呢?
但恰恰相反,本人就非常喜愛 XML ,且聽下文分解。
但千萬別誤會,本文并不是在反對 JSON 。 JSON 的確是很好的數(shù)據(jù)格式,但它僅僅只是一種數(shù)據(jù)格式,經(jīng)常被臨時用于將數(shù)據(jù)從 A 點傳到 B 點。它比 XML 更簡短易讀,但僅此而已。
XML 是一種非常強大的語言,而非只是單純的數(shù)據(jù)格式。相對于 JSON 和其他簡單的數(shù)據(jù)格式來說,如 YAML ,XML 至少有以下四個重要特性。
XPath
為了從文檔中得到上文類似的出版年份,只需要發(fā)送一個簡單的 XPath 請求:/book/published/year/text() 。但是,必須得有一個 XPath 處理器來解析請求并返回2004。好就好在 XPath3.0是集 functions、predicates、axes 等為一體的強大檢索引擎,在不用 Java 代碼編寫任何遍歷的邏輯的情況下,就可以在 XPath 請求中以自然語言形式加入任何邏輯,例如,你可以直接發(fā)出請求 “How many books were published by David West in 2004?” ,便能通過 XPath 得到答案。而這是 JSON 所不能做到的。
Attributes and Namespaces
可以將 metadata 加到 XML 數(shù)據(jù)中,正如上面的 id 屬性一樣。數(shù)據(jù)保存在元素中,例如圖書作者的姓名,而 metadata(數(shù)據(jù)的數(shù)據(jù))應(yīng)該保存為屬性,這會大大有利于組織和結(jié)構(gòu)化信息。最重要的是,元素和屬性都可以標記為屬于某個 namespaces ,當多個應(yīng)用使用同一 XML 文檔時,這種技術(shù)的優(yōu)勢會非常明顯。
XML Schema
試想這樣的情況,當你在一臺機器上創(chuàng)建了 XML 文檔,在其他電腦上做了數(shù)次修改,然后又傳到別的電腦上使用,所以必須確保文檔結(jié)構(gòu)沒有被中間操作所破壞。比如可能有人用
XSL
事實上,可以不用任何 Java/Ruby 等代碼就能完成 XML 文檔的修改。簡單的說,你只需要創(chuàng)建一個 XSL transformation 文檔并將其應(yīng)用于原始 XML ,然后得到一個新的 XML 。 XSL 語言(純功能性語言)是專為分層數(shù)據(jù)操作設(shè)計的,它比 Java 或任何其他面向?qū)ο?過程的語言都更適合這一任務(wù)。借助 XSL 可以將 XML 轉(zhuǎn)換為任何形式,包括純文本和 HTML 。很多人抱怨 XSL 太復雜,但其實沒那么難, XSL 的核心功能其實很簡單,大家不妨一試。
以上所述并不是 XML 的全部特征,但這四大特性的確用途非凡。它們不僅可以讓文檔的“自給自足”,還能進行自我驗證(XML Schema),進而知道如何修改(XSL),最后還能方便地獲得其中的文檔內(nèi)容(Xpath)。
同時,市面上還有很多以 XML 為基礎(chǔ)發(fā)展的語言、標準和應(yīng)用,包括 Xforms、 SVG、 MathML、 RDF、 OWL、 WSDL 等。但一般的主流項目中都不會用到,因為它們的針對性都太強。
設(shè)計 JSON 的用途并非是滿足以上特性,盡管 JSON 領(lǐng)域現(xiàn)在努力嘗試,包括用于查詢的 JSONPath 、一些轉(zhuǎn)換工具和用于驗證的 json-schema ,但和強大的 XML 相比這只是微不足道的模仿,筆者并不認為會有長遠發(fā)展,而且遲早會消失殆盡。
綜上所述, JSON 是一種沒有過多附加功能的簡單數(shù)據(jù)格式,其最佳的使用情況是在 AJAX 下,除此之外,本人都強烈推薦大家使用 XML。
OneAPM 為您提供端到端的 Java 應(yīng)用性能解決方案,我們支持所有常見的 Java 框架及應(yīng)用服務(wù)器,助您快速發(fā)現(xiàn)系統(tǒng)瓶頸,定位異常根本原因。分鐘級部署,即刻體驗,Java 監(jiān)控從來沒有如此簡單。想閱讀更多技術(shù)文章,請訪問 OneAPM 官方技術(shù)博客。
感謝各位的閱讀!看完上述內(nèi)容,你們對JSON和XML的對比分析大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。