您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > javascript

JSON 与 Xml的对决

时间:2021-06-04 13:53:45  来源:今日头条  作者:小小码农Kamily

Json 和 Xml 的目的是相似的,他们都是将方便理解和易读的方式将复杂数据组织到各种接口和语言中,这种类型的技术当然是不能缺少的,我们通过他们构建数据也能很好的去共享他们,但是尽管他们的目标类似,但是运作方式却是不同的。

在本文中,我们将对 JSON 和 Xml 进行比较,充分了解他们的优缺点,然后深入地研究它们有什么区别和共同点。

XML

XML是可扩展标记语言,在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。。此外,XML 是支持扩展的,开发人员可以自由的创建自描述的标签和语言,这种语言不一定是数据,它允许开发人员存储和组织数据,最终以数据的方式呈现,简单的说,XML就是一种为存储数据而创建的标记行语言。

XML 起源于 SGML(标准通用标记语言),但是它的方式却更加灵活和直接。它以将不同的系统转换为通用系统来促进数据交换为宗旨,为此,XML实施了一组关于语义和自定义标记语言的规范:它为任何应用程序建立了标准和清晰的结构,确保数据完整性和互换性。

尽管如此,XML却不是一种编程语言,因为它本身并不执行算法或计算,也就是说,它并没有自己的一套语法规则和词汇来生成计算机的程序,XML 被开发用于识别、存储和组织数据。此外,由于它可以采用 html 功能,因此它在各种系统中都具有优势。

JSON

JSON 代表 JAVAScript Object Notation,这也就是说它是 JavaScript 中的主要数据格式。JavaScript 的日益流行也因此导致了更多 JSON 消息的创建。JSON 已经实现了与Javascript的完美集成和配对。另外,尽管是用 JavaScript 编写的,但 JSON 是独立于语言的(就像 XML),这意味着您可以将它与任何编程语言一起使用。

JSON 的第一条消息是在 2001 年发送的,从那时起,这种用于存储和传输数据的数据格式得到了越来越多的采用。实际上,与 XML 类似,JSON 也从 Web 服务器接收数据并将其传输到网页。然而,它需要的编码更少,尺寸更小,从而有助于更快地处理和数据传输。

JSON 与 XML:差异

尽管解决了非常相似的目的,但 JSON 和 XML 之间还是存在一些关键差异。区分两者有助于决定何时选择其中之一,并根据特定需求和目标了解哪个是最佳选择。

首先,如前所述,XML 是一种标记语言,而另一方面,JSON 是一种数据格式。使用 JSON 的最大优势之一是文件更小;因此,传输数据比 XML 快。此外,由于 JSON 紧凑且易于阅读,文件看起来更干净、更有条理,没有空标签和数据。其结构的简单性和最少的语法使 JSON 更容易被人类使用和阅读。相反,由于标签结构使文件更大更难阅读,XML 通常以其复杂性和老式标准为特征。

然而,JSON 与 XML 并不完全是一个公平的比较。JSON 通常被错误地认为是 XML 的替代品,但虽然 JSON 是进行简单数据传输的绝佳选择,但它不执行任何处理或计算。XML 可能是“古老的”和复杂的,但它的复杂性使这种语言不仅可以传输数据,还可以处理和格式化对象和文档。

与 JSON 不同,XML 中的文档通常是自描述的。通常,XML 文档在标题上有一个指向其模式的链接(模式也用 XML 编写并在 W3C 的 XML 规范中定义)。因为文档的模式描述了文档上可以或不可以包含的内容,所以它有两个优点:

  1. 在编写 XML 文档时,作者知道需要哪些字段。例如,假设作者正在编写一个 XML 记录名称 car,由架构 car.xsd 定义。然后,他/她已经知道需要有哪些标签(型号、许可证、品牌等)。
  2. 可以根据模式验证文档。换句话说,加载文档的应用程序可以检查它是否正确,而不会丢失标签或其他错误。

还支持 JSON 模式,这意味着您可以使用相关数据格式执行与 XML 相同的操作。但是,它并没有内置到技术中。因此,需要扩展以支持 JSON 模式。

使用 XML 的另一个巨大优势是它可以处理注释、元数据和名称空间。此功能使开发人员可以更轻松地跟踪正在发生的事情并与其他团队成员共享文档。此外,XML 支持各种数据类型(例如图像和图表),这与 JSON 不同,后者仅支持字符串、对象、数字和布尔数组。

关于安全性,在使用 XML 时,默认启用 DTD(文档类型定义)验证和外部实体扩展,从而使结构能够应对某些攻击。禁用这些可以使 XML 结构更安全。另一方面,使用 JSON 通常在任何时候都是安全的,尽管使用 JSONP(带填充的 JSON)可能会更危险,因为它可能导致 CSRF(跨站点请求伪造)攻击。

数据在 XML 中的存储方式也不同于 JSON。虽然标记语言以树结构存储数据,但相反,JSON 像映射一样存储数据,其中包含键值对。此外,JSON 不使用结束标记并且可以使用数组(具有元素组的数据结构)。

尽管 JSON 和 XML 之间存在许多差异,但它们的主要区别在于数据解析。如前所述,JSON 可以通过常规 J​avaScript 函数轻松解析,因为它已经集成。XML 不会发生同样的情况,它必须使用 XML 解析器进行解析,因此更加困难和缓慢。尽管如此,一些语言,如 Java,将 XML 解析器作为其标准库的一部分。

JSON 与 XML:相似之处

尽管 JSON 和 XML 彼此有很大不同,但它们经常出于某种原因进行比较。首先,如前所述,它们的用途非常相似,即存储和传输数据。其次,它们都使用人类可读的文本来完成,使其更易于工作和解释。

此外,使用 XML 或 JSON 的一大优势是它们都可以通过 XHR (XMLHttpRequest) 获取。XHR 是一种可用于 JavaScript、phpPython、Ruby 等脚本语言的 API,其对象允许从 Web 服务器请求数据。此外,XML 和 JSON 都可以解析并与大多数编程语言兼容。

最后,尽管在结构和语义方面存在差异,但 JSON 和 XML 都遵循值中值的分层顺序。

正如我们所观察到的,它们的差异比它们的共同点更显着。因此,最终的问题是:如果 JSON 和 XML 具有相似的用途,但又如此与众不同,那么哪个更好?

JSON 与 XML:哪个更好?

说实话,这个问题的答案并没有那么简单。XML 在创建之初就迎来了它的黄金时代。它为通用语言的数据交换做出了巨大贡献,改变了计算世界。时至今日,尽管 XML 通常被认为是“过时的”,但 XML 具有令人钦佩的特性,这些特性超越了快速处理和数据传输,因此比 JSON 更复杂。

因此,如前所述,JSON 与 XML 并不是一个公平的比较。一件事是根据开发人员的目标来比较这两种技术,同时考虑它们的用途。在这种情况下,JSON 更快且更易于使用。但是,另一件事是考虑每种技术提供的功能来比较它们。在这方面,尽管 XML 速度更慢且更复杂,但它也提供了迄今为止 JSON 尚未开发的附加功能。

技术从未停止发展,随着 JavaScript 成为最流行的编程语言之一,JSON 也开始越来越受到关注。此外,一旦 JSON 更简单、更易于使用,并且具有整体出色的性能和良好的速度,开发人员很快就开始使用它。

总而言之,要执行不需要太多验证和语法问题的数据交换,JSON 很可能是最佳选择。然而,JSON 的存在并没有放弃学习 XML 的重要性,因为它的复杂性和特性可以超越快速的数据传输和处理。

结论

JSON 和 XML 用于操作系统的编程语言,允许共享数据。尽管 XML 较旧,但这种标记语言能够定义一组规则和结构,使数据交换具有通用性,并进一步生成人类和计算机可读的文档。

另一方面,JSON 是一种数据格式,是一种与 XML 具有相同目的的更现代的方法。但是,由于它生成的文件更轻、速度更快,因此它更适合浏览器和服务器之间的数据传输。相比之下,XML 以其数据结构方式脱颖而出。

正如我们所观察到的,JSON 和 XML 在各个方面都不同,从适用性到编码表示、数据结构,甚至安全性。在同等权衡 XML 和 JSON 之后,人们得出结论,JSON 是实现数据结构化和交换机制的最快、最简单的方法。在这方面,JSON 的性能超过了 XML。然而,XML 在数据存储中一直扮演着重要的角色,它的文档格式仍然被开发人员广泛使用,并在许多工具中被设置为默认格式。



Tags:JSON   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Json 和 Xml 的目的是相似的,他们都是将方便理解和易读的方式将复杂数据组织到各种接口和语言中,这种类型的技术当然是不能缺少的,我们通过他们构建数据也能很好的去共享他们,但...【详细内容】
2021-06-04  Tags: JSON  点击:(129)  评论:(0)  加入收藏
基于 el-form 封装了一个表单控件,包括表单的子控件。 既然要封装,那么就要完善一些,把能想到的功能都要实现出来,不想留遗憾。 毕竟UI库提供的功能都很强大了,不能浪费了对吧。 ...【详细内容】
2021-05-19  Tags: JSON  点击:(195)  评论:(0)  加入收藏
最近工作中测试一款客户端exe程序,web框架基于CEF,认证用的是jwt。说实话jwt这个东西实际运用真的很少,前几年完整撸过一次,结果这次又碰到了就基本忘光了之前的测试过程和方向...【详细内容】
2020-12-30  Tags: JSON  点击:(170)  评论:(0)  加入收藏
JSON 文件非常棒,因为它们以人类可读的格式存储数据集合。然而,如果 JSON 文件被最小化过,那么阅读 JSON 文件可能会很痛苦。• 来源:linux.cn • 作者:Abhishek Prakas...【详细内容】
2020-12-14  Tags: JSON  点击:(222)  评论:(0)  加入收藏
功能 Amis 基于 bootstrap 基于 typescript 代码开发友好 支持 json 配置渲染逻辑复杂的表单或页面,该功能十分强大 拥有齐全的 admin 组件库,完全满足一般管理系统需求 该框...【详细内容】
2020-06-26  Tags: JSON  点击:(77)  评论:(0)  加入收藏
前几天,作者遇到了这样一种情况,需要在一个让web3.py几乎不可能工作的环境中使用Python与Ethereum网络进行通信。...【详细内容】
2020-04-23  Tags: JSON  点击:(61)  评论:(0)  加入收藏
介绍jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friend...【详细内容】
2020-03-16  Tags: JSON  点击:(87)  评论:(0)  加入收藏
什么是JWTJson web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JW...【详细内容】
2019-12-30  Tags: JSON  点击:(92)  评论:(0)  加入收藏
fastjson 是 java 中常用的一个用来序列化反序列化 JSON 数据的库。因其优异的性能表现,在 java web 开放中应用比较广泛。最近需要写一个 fastjson 的检测插件,稍微研究了一...【详细内容】
2019-12-25  Tags: JSON  点击:(160)  评论:(0)  加入收藏
JSON吸引了工具构建者的注意,它们开发了用于重新格式化、验证和解析JSON的众多工具,这不足为奇。这些工具既有在Web浏览器中运行的在线实用程序,又有面向代码编辑器和IDE的插件,比如Visual Studio Code和Eclipse...【详细内容】
2019-12-23  Tags: JSON  点击:(101)  评论:(0)  加入收藏
▌简易百科推荐
1、通过条件判断给变量赋值布尔值的正确姿势// badif (a === 'a') { b = true} else { b = false}// goodb = a === 'a'2、在if中判断数组长度不为零...【详细内容】
2021-12-24  Mason程    Tags:JavaScript   点击:(5)  评论:(0)  加入收藏
给新手朋友分享我收藏的前端必备javascript已经写好的封装好的方法函数,直接可用。方法函数总计:41个;以下给大家介绍有35个,需要整体文档的朋友私信我,1、输入一个值,将其返回数...【详细内容】
2021-12-15  未来讲IT    Tags:JavaScript   点击:(19)  评论:(0)  加入收藏
1. 检测一个对象是不是纯对象,检测数据类型// 检测数据类型的方法封装(function () { var getProto = Object.getPrototypeOf; // 获取实列的原型对象。 var class2type =...【详细内容】
2021-12-08  前端明明    Tags:js   点击:(23)  评论:(0)  加入收藏
作者:一川来源:前端万有引力 1 写在前面Javascript中的apply、call、bind方法是前端代码开发中相当重要的概念,并且与this的指向密切相关。本篇文章我们将深入探讨这个关键词的...【详细内容】
2021-12-06  Nodejs开发    Tags:Javascript   点击:(18)  评论:(0)  加入收藏
概述DOM全称Document Object Model,即文档对象模型。是HTML和XML文档的编程接口,DOM将文档(HTML或XML)描绘成一个多节点构成的结构。使用JavaScript可以改变文档的结构、样式和...【详细内容】
2021-11-16  海人为记    Tags:DOM模型   点击:(34)  评论:(0)  加入收藏
入口函数 /*js加载完成事件*/ window.onload=function(){ console.log("页面和资源完全加载完毕"); } /*jQuery的ready函数*/ $(document).ready(function(){ co...【详细内容】
2021-11-12  codercyh的开发日记    Tags:jQuery   点击:(35)  评论:(0)  加入收藏
一、判断是否IE浏览器(支持判断IE11与edge)function IEVersion() {var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串var isIE = userAgent.indexOf("comp...【详细内容】
2021-11-02  V面包V    Tags:Javascript   点击:(38)  评论:(0)  加入收藏
Null、Undefined、空检查普通写法: if (username1 !== null || username1 !== undefined || username1 !== '') { let username = username1; }优化后...【详细内容】
2021-10-28  前端掘金    Tags:JavaScript   点击:(50)  评论:(0)  加入收藏
今天我们将尝试下花 1 分钟的时间简单地了解下什么是 JS 代理对象(proxies)?我们可以这样理解,JS 代理就相当于在对象的外层加了一层拦截,在拦截方法里我们可以自定义一些个性化...【详细内容】
2021-10-18  前端达人    Tags:JS   点击:(51)  评论:(0)  加入收藏
带有多个条件的 if 语句把多个值放在一个数组中,然后调用数组的 includes 方法。// bad if (x === "abc" || x === "def" || x === "ghi" || x === "jkl") { //logic } // be...【详细内容】
2021-09-27  羲和时代    Tags:JS   点击:(58)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条