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