简述XML和JSON

简述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 是两种常见的数据交换格式,主要有以下区别:

  1. 数据格式:XML 采用标签格式,JSON 采用键值对格式。
  2. 可读性:JSON 相对于 XML 更易于阅读和理解。
  3. 数据量:由于 XML 中包含很多标签,因此比 JSON 占用更多的空间,数据量更大。
  4. 解析速度:由于 JSON 的数据格式较为简单,因此解析速度比 XML 快。
  5. 数据类型:XML 可以表示任何数据类型,而 JSON 只支持少数数据类型,如字符串、数字、布尔值、数组和对象。
  6. 编码方式:XML 使用 UTF-8 编码方式,JSON 使用 UTF-8UTF-16 编码方式。

JSON 是在 XML 之后开发的,但随着时间的推移变得越来越流行。这两种格式经常用于通过 Web API 发送数据

XML 和 JSON 相互转换

了解了 XML 和 JSON 格式后,对于转换可以借助第三方插件 xml-jsxml2json

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:它使用三种序列化方法,即 JSONBinaryXML
  • PHP:该语言使用内置方法进行序列化和反序列化,即 serialize()deserialize()

总结

文件格式和数据类型对于了解和在不同操作中使用以减少应用程序中的延迟非常重要。