JSON是什么:
JSON(JavaScriptObject Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基于ECMAScript(歐洲計算機協會制定的js規范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
2.JSON語法
在 JS 語言中,一切都是對象。因此,任何支持的類型都可以通過 JSON 來表示,例如字符串、數字、對象、數組等。但是對象和數組是比較特殊且常用的兩種類型:
- 對象表示為鍵值對
- 數據由逗號分隔
- 花括號保存對象
- 方括號保存數組
3.常用類型
在 JS 語言中,一切都是對象。因此,任何支持的類型都可以通過 JSON 來表示,例如字符串、數字、對象、數組等。但是對象和數組是比較特殊且常用的兩種類型。
對象:對象在 JS 中是使用花括號包裹 {} 起來的內容,數據結構為 {key1:value1, key2:value2, ...} 的鍵值對結構。在面向對象的語言中,key 為對象的屬性,value 為對應的值。鍵名可以使用整數和字符串來表示。值的類型可以是任意類型。
數組:數組在 JS 中是方括號 [] 包裹起來的內容,數據結構為 ["java", "javascript", "vb", ...] 的索引結構。在 JS 中,數組是一種比較特殊的數據類型,它也可以像對象那樣使用鍵值對,但還是索引使用得多。同樣,值的類型可以是任意類型。
Java EE平臺中的JSON? processing
-
使用對象模型API
對象模型API的四個用例:從JSON數據創建對象模型,從應用程序代碼創建對象模型,導航對象模型以及將對象模型編寫到流中:從JSON數據創建對象模型、從應用程序代碼創建對象模型、導航對象模型、將對象模型寫入流。
-
使用Streaming API
? ? ? ?使用解析器讀取JSON數據,流API是解析JSON文本的最有效方法;使用生成器編寫JSON數據。
XML簡介
1.基本簡介
可擴展標記語言,標準通用標記語言的子集,是一種用于標記電子文件使其具有結構性的標記語言。
?
在電子計算機中,標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種的信息比如文章等。它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。是Internet環境中跨平臺的、依賴于內容的技術,也是當今處理分布式結構信息的有效工具。
XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。
- 可擴展標記語言是一種很像超文本標記語言的標記語言。
- 它的設計宗旨是傳輸數據,而不是顯示數據。
- 它的標簽沒有被預定義。您需要自行定義標簽。
- 它被設計為具有自我描述性。
- 它是W3C的推薦標準。
2.格式特性
它與Access,Oracle和SQL Server等數據庫不同,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,它僅僅是存儲數據。事實上它與其他數據表現形式最大的不同是:它極其簡單,這是一個看上去有點瑣細的優點,但正是這點使它與眾不同。它和超文本標記語言語法區別:超文本標記語言的標記不是所有的都需要成對出現,它則要求所有的標記必須成對出現;HTML標記不區分大小寫,它則大小敏感,即區分大小寫。
什么是XML:
?? 擴展標記語言 (Extensible Markup Language, XML) ,用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 XML使用DTD(document type definition)文檔類型定義來組織數據;格式統一,跨平臺和語言,早已成為業界公認的標準。
-
XML管道
XML管道是參與每個步驟的規范的XML處理器。如何以及何時在XML處理器中進行規范(由Unicode,IETF,W3C或其他組織定義)。
-
數據模型
基于已定義的子集規范:Unicode 3.1.0,RFC 2396,XML 1.0,命名空間,XML Base,XInclude,XML Schema和XLink / XPointer?或者仍然繼續我們當前的方法(<7!),即每個XML應用程序定義自己的集合?當然,答案并不容易,但希望Infoset將減少XML管道中涉及的規范數量:Infoset,XInclude,XML Schema,XLink / XPointer(<4!)。PSV Infoset減少了這個數字:PSVI,XInclude,XLink / XPointer。
這導致我們采用通用數據模型。由于歷史原因,在W3C中開發了幾個數據模型:DOM,XPath 1.0,Infoset,PSV Infoset,XML Query等。它們中的每一個都是向前一個添加/刪除信息。例如,最近的XQuery 1.0和XPath 2.0數據模型正在PSV Infoset之上添加參考節點信息項。
DOM數據模型添加了更多信息,例如CDATA部分或實體引用。由于向后兼容性原因,更改DOM數據模型會很困難,但是,使用加載和保存模型,DOM能夠在不破壞向后兼容性的情況下滿足Infoset的要求。我們還能夠使用抽象模式/ PSVI對象模型來表示PSV信息集。恕我直言,應該針對PSVI定義每個新的XML應用程序,包括XInclude。
JSON和XML的比較
- 可讀性
XML有明顯的優勢,畢竟人類的語言更貼近這樣的說明結構
- 可擴展性
XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,而JSON卻不能。不過JSON在Javascript主場作戰,可以存儲Javascript復合對象,有著xml不可比擬的優勢。
- 編碼難度
XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有提供的工具。無工具的情況下,相信熟練的開發人員一樣能很快的寫出想要的xml文檔和JSON字符串,不過,xml文檔要多很多結構上的字符。
- 解碼難度
??? XML的解析方式有兩種:一是通過文檔模型解析,也就是通過父標簽索引出一組標記;另外一種方法是遍歷節點。這個可以通過遞歸來實現,不過解析出來的數據仍舊是形式各異,往往也不能滿足預先的要求。
XML和JSON都使用結構化方法來標記數據,下面來做一個簡單的比較。
?