为什么 JSON 比 XML 更轻量?

2024-03-27

我发现 JSON 和 XML 之间的区别。因为,两者都是为了系统之间的数据交换,但是JSON和XML之间有一个很大的区别,即JSON比XML更轻量级。但我无法找到 JSON 轻量级的真正原因。是什么让 JSON 变得轻量级?

我发现的一个答案是,在 JSON 中没有很多额外的 xml 标记。它实际意味着什么。还有其他原因可以说明 JSON 为什么是轻量级的吗?


lookedJSON 和 XML 文档的示例?

虽然 JSON 和 XML 都用于表示任意trees就数据而言,XML 更为冗长。树中的每个元素都有一个名称(元素类型名称),并且该元素必须包含在一对匹配的标签中。相比之下,JSON 使用类似于 Javascript 的“嵌套数组”类型的表示法来表达树(事实上,JSON 文档实际上可以被解析为 Javascript 以生成相应的数组)。

看一看在差异处 http://json.org/example.html.

XML 在语义上当然更丰富,因为元素可以用任意数量的属性,并且元素可能包含混合内容自由文本流以及进一步的嵌套元素。例如,以下代码片段如果用 JSON 表示会很乏味:

<paragraph>
   This is an entire paragraph of <emph>text</emph>. It is interspersed with
   further, nested <emph>XML elements</emph>, as well as the occasional
   <link href="http://stackoverflow.com/a/12346394/596781">hyperlink</link>.
</paragraph>

另一方面,dataJSON 中的类似文档可以简单得多。想象一下:

<properties>
    <property type="int" name="ID">123</property>
    <property type="date" name="birthday">19700101</property>
    <references>
        <url>http://stackoverflow.com/a/12346394/596781</url>
        <doi>something.made.up</doi>
    </references>
</properties>

这将成为一个非常紧凑的 JSON 数组。

第二个考虑因素是围绕这两种格式的工具集的数量。虽然 JSON 工具主要用于解析 JSON 数据,但 W3C 一直在开发大量依附技术来以系统方式操作 XML,例如 XSLT 和 XPATH。

简而言之,作为一个非常个人的观点,我认为 XML 是关于文档的,而 JSON 是关于数据的。对于大型结构化文档,XML 会感觉更加自然和有用,而 JSON 通常是传输数据集的更简单且不太冗长的格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 JSON 比 XML 更轻量? 的相关文章

随机推荐

  • Android sdk内容加载器错误[重复]

    这个问题在这里已经有答案了 我在用日食朱诺win 7 32位平台上的版本 一切都很顺利 直到今天当我启动 Eclipse 时 Android sdk 内容加载器不能超过 0 我尝试重新启动 Eclipse 我结束了 adb 进程并再次重新启
  • 在sql中,带有Select语句的Insert在并发性方面安全吗?

    在我的回答中这个问题 https stackoverflow com questions 1994663 setting version column in append only table 1994757 1994757我建议使用单个插
  • 在没有窗口焦点的情况下检测 Windows 上的按键 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在网上搜索 但 Google 上的所有热门结果都只将我引向 Java 这令人沮丧 我想做的是 制作一个监听键盘事件的程序 而不是
  • 模型中的一个或多个参数使用 Ruby on Rails 查找条件

    假设我有模型 汽车 和控制器 汽车 以及方法 显示 我有多个属性 例如 in production year make 我可以轻松地执行类似的操作来查找与传递的所有参数相匹配的汽车 def display cars Car find all
  • MySQL 查询 - 基于两个因素连接数据,然后根据值自定义数据排序方式

    首先 我是查询多个表的新手 所以如果这是一个有点愚蠢的问题 我很抱歉 但我们都必须从某个地方开始 我制作了一张图片 应该更容易理解 http www mediumsliced co uk temp mysqlhelp jpg http ww
  • 为什么 valarray 这么慢?

    我正在尝试使用 valarray 因为它在操作向量和矩阵时非常类似于 MATLAB 我首先做了一些性能检查 发现valarray无法达到书中声明的性能C 编程语言 https en wikipedia org wiki The C 2B 2
  • 为什么 IIS 中的授权规则不会限制对我的 WCF 服务的访问?

    我有一个托管在 IIS 10 中的独立 WCF 服务 我想将对 Web 服务的访问限制为选定的用户组 我可以通过在 IIS 中执行以下操作来为 Web 应用程序执行此操作 身份验证 仅 Windows 身份验证 禁用匿名身份验证 授权规则
  • JAXB:类转换异常,但类具有相同的名称

    我有一个有趣的问题 当我启动 glassfish 服务器时 一切正常 但是 我更改了一些代码并发布了服务器 然后运行我的客户端 SistemGirisClientKullaniciDogrula 应用程序抛出此异常 java lang Cl
  • UnicodeDecodeError:“utf-8”编解码器无法解码位置 34 中的字节 0xe3:无效的连续字节

    我想用以下代码在 python 文件中打开一些波斯语文本文件 for line in codecs open 0001 txt encoding UTF 8 lines appends line 但它给了我这个错误 gt Traceback
  • Primefaces - 用于数据表中实时过滤的自定义组件

    PrimeFaces 对 p dataTable 的过滤器做得非常好 UX 网站很棒 因为过滤器字段位于列标题中 因此毫无疑问您正在过滤什么 并且它正在实时工作 数据会随着您的输入而变化 好吧 只有当您短暂停顿时 但它在我的意见正是用户所期
  • ASP.NET MVC Html 帮助程序

    我尝试创建一些 Html Helpers 它们将具有开始标记和结束标记 其中将包含其他内容 如 Html BeginForm 那样 例如 在 Razor 中 我们可以使用 Html BeginForm 帮助器 其语法如下 using Htm
  • 如何将外部JS脚本添加到VueJS组件中?

    我必须为支付网关使用两个外部脚本 现在两者都被放入index html file 但是 我不想在开始时加载这些文件 仅当用户打开特定组件时才需要支付网关 using router view 有办法实现这个目标吗 Thanks 解决这个问题的
  • 如何手动填充 ViewModel(不使用 AutoMapper!)

    我知道有很多关于这个主题的帖子 但我找不到一个可以帮助我做我想做的事情 我知道我最终会使用 Automapper 但在开始使用它之前 我想学习如何手动执行操作 我想创建一个 ViewModel 通过存储库用我的实体中的值填充它并将其发送到我
  • 从 Mathematica 中的 Web 设置用户代理导入

    当我使用 Mathematica 连接到我的网站时 Import mysite Data 并查看我的 Apache 日志 我看到 99 XXX XXX XXX 22 May 2011 19 36 28 0200 GET HTTP 1 1 2
  • 我可以向 JLabel 添加操作侦听器吗?

    我想用 JLabel 替换 JButton 并且希望我的代码在单击 JLabel 时执行某些操作 当我拥有 JButton 时 我使用操作侦听器来处理按钮上的点击 myButton addActionListener new clicksL
  • 如何在Robot Framework中将图像添加到html日志中?

    如何将图像添加到机器人框架的html日志中 我想在 Robot Framework 的 html 日志中添加一些图片 有人可以对此有一些想法吗 Keyword Log来自内置库有html参数可能可以满足您的需要 参见文档 http robo
  • DDD:通过身份引用聚合根内的实体

    我一直在寻找正确的参考方式entities位于一个聚合根 当我们只得到他们的身份来自 URL 参数 我问了一个上一个问题 https stackoverflow com questions 7196820 update an entity
  • C++ 方法调用中前导“::”的目的是什么[重复]

    这个问题在这里已经有答案了 我一直在使用 Boost 库 在 Boost Exception 中 我注意到如下代码 define BOOST THROW EXCEPTION x boost throw exception x 只是出于好奇
  • 避免控制台消息形式封装函数

    我正在使用一个包函数 coreenv 来自 seewave 它在控制台中创建一条 请稍候 消息 正如我反复所说的那样 该消息非常烦人 所以 我需要一种方法 从我的代码中 暂时禁止控制台消息 OR 访问功能代码并取消消息行 以下不是我的真实代
  • 为什么 JSON 比 XML 更轻量?

    我发现 JSON 和 XML 之间的区别 因为 两者都是为了系统之间的数据交换 但是JSON和XML之间有一个很大的区别 即JSON比XML更轻量级 但我无法找到 JSON 轻量级的真正原因 是什么让 JSON 变得轻量级 我发现的一个答案