XML和JSON - 优点和缺点?

时间:2011-04-10 23:12:21

标签: xml json

我最近听说过JavaScript Object Notation(JSON),在查找之后,它似乎变得相当受欢迎,作为可扩展标记语言(XML)的替代品。

我进入this页面了解更多信息,但它似乎更像是一个打击XML的页面而不是比较页面。所以我想我应该在这里问:

与XML相比,JSON有什么好处?为什么(如果有的话)我们应该选择其中一个?

8 个答案:

答案 0 :(得分:39)

  • JSON更紧凑,可以轻松加载JavaScript。
  • XML更严格,并且支持模式和命名空间。

从表面上看,JSON在各方面都显得优越 - 它灵活,更紧凑,在许多情况下更易于使用(特别是在使用JavaScript时),但它缺少一些关键功能,特别是:

  • 架构支持

即。甲方能够指定文件格式的能力,以及乙方检查他们是否提供符合此格式的内容的能力。

这在单独系统之间传递数据时至关重要,因为偏离预期格式可能意味着无法处理数据(或者更糟糕的是,处理不正确)。

  • 命名空间支持

即。能够在同一文档中混合多个来源(或由多个来源编写)读取的数据。

此实例的一个示例是SOAP协议 - 名称空间允许分离与序列化应用程序数据一起传递的SOAP“Envelope”或“Wrapper”数据。这允许Web框架处理和处理SOAP Envelope,然后将body / payload数据传递到应用程序。


JSON在开发需要快速,紧凑和方便的数据序列化的Web应用程序时非常有用,但是它的灵活性使得它不像XML那样适合在不同系统之间传输数据,或存储数据将由第三方阅读。

也许及时这些功能将出现在JSON中,但目前XML是Web服务和文件格式等主要格式。

答案 1 :(得分:21)

JSON的优势

  • 邮件大小较小
  • 文档中的更多结构信息
    • 可以轻松区分数字1和字符串"1",因为数字,字符串(和布尔值)在JSON中的表示方式不同。
    • 可以轻松区分单个项目和大小为1的集合(使用JSON数组)。
  • 更容易表示空值
  • JavaScript轻松使用

XML的优点

  • 命名空间允许共享标准结构
  • 更好地代表继承
  • 表达文档结构的标准方式:XML模式,DTD等
  • 解析标准:DOM,SAX,StAX
  • 查询标准:XQuery和XPath
  • 转换文档的标准:XSLT

<强>绘图

  • 人类可读
  • 易于解析

答案 2 :(得分:6)

<强> XML

  • 可以有一个表明其格式的架构。
    • 这对质量控制人员很感兴趣。你可以证明它的格式符合预期的格式,因此你可能不必像每次想要引用一个字段时检查字段是否存在一样热情。
    • (虽然这可以预先假定您根据自己的架构实际验证XML。)
  • 臃肿;每个字段名称必须每个字段写出两次。 EW!

<强> JSON

  • 不那么臃肿,更容易解析,可以说是更具人性化(如果你把它正确分开)。
  • 不那么强大:没有足够的表现力将属性与值分开。

答案 3 :(得分:5)

XML的优点

  1. 在各种语言和框架中提供无处不在的支持。很可能已经有了一个工具可以帮助你从XML响应中提取信息。

  2. 如果您选择,它可以遵循具体的架构。验证后,您可以说它是正确的并开始解析。

  3. 命名空间允许您划分XML。

  4. JSON的优势

    1. 与XML相比轻量级。较少的字符=较短的时间通过internet tubes

    2. 如果您需要Web应用程序的某些内容,则可以更轻松地使用Javascript处理。

答案 4 :(得分:3)

JSON - 更小,可以作为JavaScript对象本地加载(速度是一个值)

XML - 仍然是标准的,不过更老(更慢,更大,但不仅仅是JS)

答案 5 :(得分:2)

JSON是一种比XML更简单的格式。 JSON仅用于将数据描述为对象层次结构,而XML还具有许多其他功能。

如果你只需要发送简单的简单数据,那么JSON是一个很好的选择,因为它正是它的目的。

如果您需要一种更强大的方式来描述您的数据,那么您将需要XML,因为JSON根本不做任何花哨的事情。

答案 6 :(得分:1)

他们是同样富有表现力的格式。 JSON不那么冗长。 JSON可以在JavaScript(和其他语言)中轻松解析,并且很容易通过很多东西解析XML。

我认为最重要的考虑因素是消耗数据的内容 - 如果您已经拥有一堆XML解释代码,请坚持使用。如果您的所有客户都是Web开发人员,请使用JSON。

答案 7 :(得分:1)

冗长-XML使用的单词多于必要

JSON更快-解析XML软件缓慢且麻烦。由于解析大型XML文件的冗长性和成本,许多此类DOM操作库可能导致您的应用程序使用大量内存。

JSON数据模型的结构与数据匹配:JSON的数据结构是一个映射,而XML是一棵树。尽管地图(仅键/值对)可能会受到限制,但这正是我们想要的,因为它易于解释且可预测。

在代码中:项目在代码中的表示方式相同。在许多语言中,尤其是动态语言中,您只需“以JSON形式添加”,即可立即获得域对象。从JSON中的对象到代码中的对象很容易,因为它们是对齐的。从XML对象到代码对象时,它们无法对齐,并且有很大的解释空间。

JSON是有限制的,但这是一件好事:JSON在可以建模的对象方面受到限制。有些人可能认为XML更好,因为可以建模更多的对象,并且它不会禁止开发人员。但是,即使JSON禁止开发人员,它也是一种积极的方式,它使代码更简单,更可预测且更易于阅读。可以将XML格式化为公司所需的外观和功能,但是它使开发人员难以阅读,理解和转换。在大多数情况下,人们认为XML更好,因为开发人员可以在阳光下做任何事情,但是在简化的时代,少花钱多了,使JSON成为更好的选择。