简述XML和JSON

简介: 笔记

5.png


序列化是一种语言格式,用于转换对象并将其传输到文件、数据库或字节流。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()


总结


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


相关文章
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
49 1
|
4月前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
70 1
|
3月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
195 61
C# 中的 XML 与 JSON 数据处理
|
2月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
265 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
7月前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
372 3
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
516 0
|
4月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
113 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
4月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
61 0
|
7月前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
125 3
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
|
5月前
|
XML JSON 缓存
优化Java中XML和JSON序列化
优化Java中XML和JSON序列化