JSON/xml

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都使用結構化方法來標記數據,下面來做一個簡單的比較。


?

轉載于:https://www.cnblogs.com/dashuaiB/p/10725627.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394225.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394225.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394225.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

unity開寶箱動畫_[技術博客]Unity3d 動畫控制

在制作游戲時&#xff0c;導入的箱子模型本身自帶動畫。然而&#xff0c;它的動畫是一個從打開到關閉的完整過程&#xff0c;并且沒有給出控制打開關閉的方法。最直接的想法是對該動畫進行拆分&#xff0c;再封裝成不同的動畫狀態&#xff0c;但是不巧的是&#xff0c;這個動畫…

php上傳大文件時,服務器端php.ini文件中需要額外修改的選項

幾個修改點&#xff1a; 1、upload_max_filesize 上傳的最大文件 2、post_max_size 上傳的最大文件 3、max_execution_time 修改為0表示無超時&#xff0c;一直等待 4、max_input_time 參考網址&#xff1a; 在php.ini中把max_input_time 和 max_execution_time設置得特別長…

《中國人工智能學會通訊》——11.21 結束語

11.21 結束語 本文針對交通流的網絡性、異質性和動態性特點&#xff0c;結合當前多任務學習方法的不足提出了相應的解決方案。然而&#xff0c;在實際的應用場景中還存在更多的挑戰&#xff0c;需要進一步深入的研究方向包括&#xff1a;① 高維任務的共同學習方法。在高維數據…

如何把一個軟件嵌入另一個軟件_自動化正在成為一個“軟件”行業

摘要在智能制造時代&#xff0c;自動化行業正在成為一個軟件行業&#xff0c;它正在改變著整個產業的未來&#xff0c;也將為制造業帶來更為廣闊的空間。自動化正在成為一個“軟件”行業&#xff0c;在智能時代&#xff0c;軟件正在成為自動化行業競爭的關鍵。自動化已然成為軟…

leetcode1020. 飛地的數量(dfs)

給出一個二維數組 A&#xff0c;每個單元格為 0&#xff08;代表海&#xff09;或 1&#xff08;代表陸地&#xff09;。 移動是指在陸地上從一個地方走到另一個地方&#xff08;朝四個方向之一&#xff09;或離開網格的邊界。 返回網格中無法在任意次數的移動中離開網格邊界…

未來編程語言的走向_在編程方面我從失敗走向成功的過程以及讓我成功的原因

未來編程語言的走向In the past 10 years, I’ve had three separate experiences trying to learn programming. I’ve wondered why I’ve had such different results. What had caused me to both fail and succeed?在過去的10年中&#xff0c;我有3種不同的嘗試學習編程的…

《中國人工智能學會通訊》——5.16 結 論

5.16 結 論 在過去的 30 年中&#xff0c;移動操作機器人在機器人實驗室受到了廣泛的關注并獲得了比較充分的研究。未來隨著工業領域的自動化需求&#xff0c;移動操作機器人將會深入到生產的各個環節。目前&#xff0c;幾乎所有的移動操作機器人都沒有在實際環境中獲得廣泛及充…

【轉載 | 筆記】IIS無法刪除應該程序池 因為它包含X個應用程序

IIS無法刪除應該程序池 因為它包含X個應用程序 今天代碼主分支在vs2015創建了虛擬目錄http://localhost/webapp指向的物理路徑是E:\webapp 之后新開了一個分支把代碼放在了D:\webapp之后又在vs2015中創建了虛擬目錄 http://localhost/webapp/home 這下就杯具了。在主分支調試的…

python作中國地圖背景氣泡圖_exce表格中怎么制作中國地圖背景數據氣泡圖

exce表格中怎么制作中國地圖背景數據氣泡圖exce表格中怎么制作中國地圖背景數據氣泡圖?excel表格中想要在中國地圖上顯示氣泡來看看地區分布情況&#xff0c;該怎么設置中國地圖氣泡圖表呢?下面我們就來看看詳細的教程&#xff0c;需要的朋友可以參考下1、如圖1所示&#xff…

leetcode979. 在二叉樹中分配硬幣(dfs)

給定一個有 N 個結點的二叉樹的根結點 root&#xff0c;樹中的每個結點上都對應有 node.val 枚硬幣&#xff0c;并且總共有 N 枚硬幣。 在一次移動中&#xff0c;我們可以選擇兩個相鄰的結點&#xff0c;然后將一枚硬幣從其中一個結點移動到另一個結點。(移動可以是從父結點到…

python怎么顯示求余的除數_Python算術運算符及用法詳解

算術運算符也即數學運算符&#xff0c;用來對數字進行數學運算&#xff0c;比如加減乘除。下表列出了 Python 支持所有基本算術運算符。表 1 Python 常用算術運算符運算符說明實例結果加12.45 1527.45-減4.56 - 0.264.3*乘5 * 3.618.0/除法(和數學中的規則一樣)7 / 23.5//整除…

任務完成:我從CNC2018 GetAJob挑戰中學到的東西

什么是CNC2018&#xff1f; (What is CNC2018?) CNC2018 stands for the CodeNewbie Challenge of 2018 put on by CodeNewbie. If you haven’t heard of CodeNewbie, it’s a community and podcast run by Saron Yitbarek. They also host live Twitter Chats on Sundays a…

HTML td 標簽的 colspan 屬性

表格單元橫跨兩列的表格&#xff1a; <table border"1"><tr><th>Month</th><th>Savings</th></tr><tr><td colspan"2">January</td></tr><tr><td colspan"2">Fe…

Kotlin的Lambda表達式以及它們怎樣簡化Android開發(KAD 07)

作者&#xff1a;Antonio Leiva 時間&#xff1a;Jan 5, 2017 原文鏈接&#xff1a;https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表達式允許更簡單的方式建模式函數&#xff0c;所以它是Kotlin和任何其他現代開發語言的最強工具之一。 在Java6中&#xff0c;我們僅能下…

Pyhon進階9---類的繼承

類的繼承 基本概念 定義 格式如下 繼承中的訪問控制 class Animal:__CNOUT 0HEIGHT 0def __init__(self,age,weight,height):self.__CNOUT self.__CNOUT 1self.age ageself.__weight weightself.HEIGHT heightdef eat(self):print({} eat.format(self.__class__.__name__…

python怎么備份列表_python實例:backup 備份

python實例&#xff1a;backup 備份本文來源于《python簡明教程》中的實例1. 提出問題&#xff1a; 我想要一個可以為我的所有重要文件創建備份的程序。2. 分析明確問題&#xff1a;我們如何確定該備份哪些文件&#xff1f;備份保存在哪里&#xff1f;我們怎么樣存儲備份&#…

leetcode1466. 重新規劃路線(dfs)

n 座城市&#xff0c;從 0 到 n-1 編號&#xff0c;其間共有 n-1 條路線。因此&#xff0c;要想在兩座不同城市之間旅行只有唯一一條路線可供選擇&#xff08;路線網形成一顆樹&#xff09;。去年&#xff0c;交通運輸部決定重新規劃路線&#xff0c;以改變交通擁堵的狀況。 路…

mysql數學函數名_Mysql數學函數

所有的數學函數在發生錯誤的情況下&#xff0c;均返回 NULL。-一元減。改變參數的符號&#xff1a;mysql> SELECT - 2;-> -2注意&#xff0c;如果這個操作符被用于一個 BIGINT&#xff0c;返回值也是一個 BIGINT&#xff01;這就意味著&#xff0c;應該避免在一個可能有值…

angular 漸進_如何創建具有Angular和無頭CMS的漸進式Web應用程序

angular 漸進by Ondrej Chrastina通過Ondrej Chrastina 如何創建具有Angular和無頭CMS的漸進式Web應用程序 (How to create a progressive web app featuring Angular and headless CMS) Have you ever wondered how a headless Content Management System fits in with Progr…

win10不用第三方工具激活的方法

步驟&#xff1a;1、本機上裝個win7旗艦版&#xff0c;這個得拿第三方工具激活一下&#xff0c;當然你如果已經購買了正版更沒問題了。第三方工具推薦那個啥啥loader&#xff0c;記住&#xff1a;chew_wga系列的暴力工具是不行的哦&#xff1b;2、把需要安裝的win10官方安裝鏡像…