簡述XML和JSON

序列化是一種語言格式,用于轉換對象并將其傳輸到文件、數據庫或字節流。XML 和 JSON 是序列化語言格式的類型。
XML(Extensible Markup Language)和 JSON(JavaScript Object Notation)都是數據交換格式,用于在不同的應用程序之間傳輸數據。本文就來一起學習一下基本的知識,什么是XML?XML和JSON有什么區別?相互之間如何轉換?前面有介紹JavaScript和JSON之間的關系。
數據結構類型
- 結構化數據:有時它也被稱為關系數據,因為數據共享相同的格式和行和列的模式。結構化查詢語言 (SQL) 用于通過簡單查詢查找數據。
- 半結構化數據:在這種類型中,數據不相關,因為它們不存儲在行和列模式中。數據使用標記、縮進或冒號作為組織中數據層次結構的鍵值對。在這里,數據序列化起著重要作用,以便開發人員以可以傳輸給另一個開發人員/機器的格式制作數據。
- 非結構化數據:此類數據為無法以正確格式定義的照片、音頻、日志文件和視頻。與它們相關的元數據被認為是半結構化的,但作為一個整體數據是非結構化的
什么是XML
XML(Extensible Markup Language)是一種標記語言,它類似于 HTML,但是更加靈活,可以自定義標簽。XML 的設計目標是傳輸數據,而不是展示數據。XML 語言具有良好的可擴展性,可以被用于表示和傳遞任何類型的數據,過去在 Web 開發中被廣泛使用。XML 被設計為具有自我描述性,可擴展性和可移植性。
什么是JSON
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,是 JavaScript 中的一種對象表示方法。JSON格式的數據通常用于異步瀏覽器/服務器之間的數據交換,可以被各種編程語言解析和生成。
JSON數據格式和JavaScript中的對象字面量有些相似,在JSON中,所有的屬性名都必須用雙引號包圍,而JavaScript中則可以使用單引號或不用引號。此外,JSON中不支持函數類型和變量類型,只支持基本數據類型和數組、對象這兩種復合數據類型。JSON還有一些其他規范,如不能包含特殊的控制字符,屬性名必須是字符串,不支持注釋等。
XML 和 JSON 區別
XML 和 JSON 是兩種常見的數據交換格式,主要有以下區別:
- 數據格式:XML 采用標簽格式,JSON 采用鍵值對格式。
- 可讀性:JSON 相對于 XML 更易于閱讀和理解。
- 數據量:由于 XML 中包含很多標簽,因此比 JSON 占用更多的空間,數據量更大。
- 解析速度:由于 JSON 的數據格式較為簡單,因此解析速度比 XML 快。
- 數據類型:XML 可以表示任何數據類型,而 JSON 只支持少數數據類型,如字符串、數字、布爾值、數組和對象。
- 編碼方式:XML 使用
UTF-8編碼方式,JSON 使用UTF-8或UTF-16編碼方式。
JSON 是在 XML 之后開發的,但隨著時間的推移變得越來越流行。這兩種格式經常用于通過 Web API 發送數據
XML 和 JSON 相互轉換
了解了 XML 和 JSON 格式后,對于轉換可以借助第三方插件 xml-js 和 xml2json
const convert = require("xml-js");
const xmlString = `
<bookstore>
<book category="javascript">
<title>JavaScript: The Definitive Guide, Seventh Edition</title>
<author>David Flanagan</author>
<price>95.90</price>
</book>
<book category="typescript">
<title>TypeScript入門與實戰</title>
<author>鐘勝平</author>
<price>49.50</price>
</book>
</bookstore>
`;
const json = convert.xml2json(xmlString, { compact: true, spaces: 4 });
console.log(json);
const options = { compact: true, ignoreComment: true, spaces: 4 };
const result = convert.json2xml(json, options);
console.log(result);
不同編程語言的處理方法
- Python:在 python 中,序列化由
pickle模塊完成,并且只能使用基于 python 的語言進行反序列化。 - Java:它在內部處理那些標記為
java.io.Serializable的對象/類的序列化。 - Javascript:它使用內部內置方法
JSON.parse()等。 - .Net:它使用三種序列化方法,即
JSON、Binary和XML。 - PHP:該語言使用內置方法進行序列化和反序列化,即
serialize()和deserialize()。
總結
文件格式和數據類型對于了解和在不同操作中使用以減少應用程序中的延遲非常重要。