当前位置: 首页 > 面试题库 >

JSON和XML比较

富凯风
2023-03-14
问题内容

我想知道哪个更快:XML和JSON?什么时候使用哪一个?


问题答案:

在回答何时使用哪一个之前,有一点背景知识:

编辑:我应该提到,这种比较实际上是从在具有JavaScript的浏览器中使用它们的角度来看的。这也不数据格式的方法
被使用,并且有很多很好的解析器,这将改变细节,使我在说什么不是很有效的。

JSON既更紧凑,又(在我看来)更具可读性-在传输中,仅因为传输的数据较少,它就可以“更快”。

在解析中,它取决于您的解析器。解析器会将代码(无论是JSON还是XML)转换为数据结构(如地图),都可能会受益于XML的严格特性(XML模式很好地消除了数据结构的歧义)-但是在JSON中,项目的类型(字符串/可以从句法上推断数字/嵌套JSON对象),例如:

myJSON = {"age" : 12,
          "name" : "Danielle"}

解析器不需要足够的智能就可以意识到它12代表一个数字(和Danielle其他字符串一样)。因此,在javascript中,我们可以执行以下操作:

anObject = JSON.parse(myJSON);
anObject.age === 12 // True
anObject.name == "Danielle" // True
anObject.age === "12" // False

在XML中,我们必须执行以下操作:

<person>
    <age>12</age>
    <name>Danielle</name>
</person>

(顺便说一句,这说明了XML更为冗长;这是对数据传输的关注)。要使用这些数据,我们需要通过解析器运行它,然后我们必须调用类似的代码:

myObject = parseThatXMLPlease();
thePeople = myObject.getChildren("person");
thePerson = thePeople[0];
thePerson.getChildren("name")[0].value() == "Danielle" // True
thePerson.getChildren("age")[0].value() == "12" // True

实际上,一个好的解析器很可能会age为您键入(另一方面,您可能不希望输入)。当我们访问这些数据时,发生的是-
而不是像上面的JSON示例中那样进行属性查找-我们正在对key进行映射查找name。这样形成XML可能更直观:

<person name="Danielle" age="12" />

但是我们仍然必须进行地图查找才能访问我们的数据:

myObject = parseThatXMLPlease();
age = myObject.getChildren("person")[0].getAttr("age");

编辑:原始:

在大多数编程语言中(无论如何,不​​是全部),这样的映射查找比属性查找(例如,我们在解析JSON时所获得的)要昂贵得多。

这具有误导性:请记住,在JavaScript(和其他动态语言)中,地图查找和字段查找之间 没有区别 。事实上,现场查找 只是一个地图查找。

如果您想进行真正有价值的比较,最好是对其进行基准测试-在计划使用数据的环境中进行基准测试。

在我打字时,Felix Kling已经提出了一个相当简洁的答案,就何时使用它们进行比较,因此我将不再赘述。



 类似资料:
  • 问题内容: 我正在比较JSON和BSON用于序列化对象。这些对象包含多个大量整数的数组。在我的测试中,我要序列化的对象包含大约12,000个整数的总数。我只对序列化结果的大小比较感兴趣。我正在使用JSON.NET作为进行序列化的库。我使用JSON是因为我也希望能够在Javascript中使用它。 JSON字符串的大小约为43kb,BSON结果的大小为161kb。差异因子约为4。这不是我所期望的,因

  • 问题内容: 我正在创建一个复杂的JavaScript库,用于与公司的服务器端框架一起使用。 服务器端框架将其数据编码为简单的XML格式。没有花哨的命名空间或类似的东西。 理想情况下,我想将浏览器中的所有数据解析为JSON。但是,如果这样做,我需要重写一些服务器端代码以吐出JSON。这很痛苦,因为我们拥有无法轻易更改的公共API。 我真正关心的是浏览器中解析JSON和XML的性能。真的有很大的区别要

  • 主要内容:什么是 XML?,什么是 JSON?,JSON 与 XML 之间的差异,JSON 与 XML 之间的相似之处JSON 和 XML 都是基于文本的可读格式,独立于编程语言,能够在几乎所有的编程语言中使用。本节我们就来介绍一下 JSON 和 XML 的区别。 在介绍 JSON 和 XML 的区别之前,我们先来分别介绍一下 JSON 和 XML。 什么是 XML? XML 全称“Extensive Markup Language”,译为“可扩展标记语言”,是一种源自 SGML 的、基于文本的

  • The XML to JSON Plugin (jQuery.xml2json) is a script you can use to convert simple XML into a JSON object.

  • 问题内容: 基于另一个SO问题,如何检查两个格式正确的XML代码片段在语义上是否相等。我需要的只是“相等”与否,因为我正在将此用于单元测试。 在我想要的系统中,它们是相等的(请注意“开始”和“结束”的顺序): 我可以使用lmxl和其他工具,并且一个仅允许对属性进行重新排序的简单函数也可以正常工作! 基于IanB答案的工作片段: 问题答案: 您可以使用formencode.doctest_xml_c

  • 问题内容: 我正在尝试使用C#代码比较两个Xml文件。我想忽略Xml语法差异(即前缀名称)。为此,我使用了Microsoft的XML Diff和Patch C#API。它适用于某些Xml,但我找不到配置它以与以下两个Xml一起使用的方法: XML A: XML B: 我的问题是: 我对这两个xml在语义上相等(或同构)是否正确? 可以配置Microsoft的XML Diff和Patch API来支