json vs xml对ajax请求有什么优缺点?

时间:2009-02-25 06:52:34

标签: xml ajax json xmlhttprequest

对于ajax请求,json vs xml有哪些优缺点? 性能有差异吗?即浏览器是否能够比另一种更快地处理一种格式?

8 个答案:

答案 0 :(得分:17)

总之,JSON(可以被认为是JavaScript的一个子集)比XML更精简。这有几个积极的副作用

  • JSON小于相应的XML
  • JSON更快,即更简单的语法->更容易解析(更快的解析)

在我对这个问题的原始回答中,我对JSON的看法是JavaScript,我认为它是一个近亲。但是JSON是独立的,JSON.org在描述JSON方面做得很好。它还提供了JavaScript兼容性库,在浏览器不支持时添加了对JSON.parseJSON.stringify的支持。

虽然当时(2009年中)eval用于评估JavaScript,但它也可以评估JSON,即解析JSON,但它被认为是不安全的,因为它确实允许任意JavaScript执行。

JSON恰好非常适合浏览器,并且由于与JavaScript的密切关系,这是一种发展平台的自然方式。

虽然XML可能被认为具有更好的严谨性,因为你可以输入它,但也是那些使它慢得多的东西(在我看来它也有点冗长)。但如果这是你真正想要的东西,你应该使用它,XML同样无处不在。

我不会就动态或静态类型进行辩论,但我会这样说。在无模式数据的基础上添加内容非常容易,并且有很多方法可以进行验证,无论是模式还是没有模式。

答案 1 :(得分:17)

XML的一个优点我在讨论中没有看到,XML可以有架构。这对描述XML的结构非常有用。对于简单的数据结构,JSON和一些描述你正在做的事情的文本很好。在处理更复杂的数据结构时,或者当数据的创建者和使用者不是同一个团队时,使用Schema可以帮助进行大量的通信。

此外,拥有一个模式意味着您可以验证您的数据,这在尝试调试复杂错误时可以挽救生命......

答案 2 :(得分:8)

您在本文中“ The AJAX response: XML, HTML, or JSON? ”就该主题进行了充分辩论:

<强> XML

  • 优点
    XML最重要的优点是它是其他人最容易阅读的格式 第二个优点是XML已经存在了很长一段时间,许多开发人员已经习惯了它。
  • 缺点
    将数据插入HTML页面所需的JavaScript非常详细。

<强> JSON

  • 优点
    如果将JSON文件作为新的<script>标记导入,则最重要的优点是JSON可以绕过JavaScript的同源策略。有关血淋淋的详细信息,请参阅Simon Willison's example JavaScript不允许您访问来自其他服务器的文档(无论是XML还是HTML)。但是,如果您将JSON文件作为脚本标记导入,则可以避免此问题,并且可以将任何JSON数据导入任何网站。这取决于您的业务目标,无论是好事还是坏事,但现在它是唯一允许不受限制访问的数据格式。
    第二个优点是,与XML数据的脚本相比,JSON数据的脚本稍微简单一些,与JavaScript语言的其余部分略微一致。
  • 缺点
    JSON最重要的缺点是格式很难为人类阅读,当然,每个逗号,引号和括号都应该在正确的位置。虽然对于XML也是如此,JSON的复杂外观语法,如数据片段末尾的}}]},可能会吓到新手并进行复杂的调试。

从评论中,JSON被认为比XML更快。

答案 3 :(得分:5)

尚未提及的XML的一个优点是可以使用XSLT使用任意复杂的XPath表达式从XML文档中提取数据。我无法在JSON中看到这样做的方法。您如何在JSON文档中找到包含“货币”字段作为直接后代的所有对象,而不管对象在结构中的位置?在使用XSLT / XPath的XML中,这非常简单。

但是,在浏览器中执行此操作需要付出代价。您将遇到特定于浏览器的怪癖,它可能会更慢,占用更多内存。

答案 4 :(得分:2)

虽然我喜欢Json并且会推荐它,但我认为最佳处理速度之间没有根本区别。库和平台之间的差异更为重要:一个好的xml解析器比坏的json解析器更快,反之亦然。因此,格式本身的表现通常不是一个重要因素。 两者都可以快速点亮(Java有两个很好的解析器,例如,其他语言也可以。)

至于紧凑性,这取决于数据的类型,Json通常更紧凑,但不是那么根本。除非你有很多数组/列表,其中json符号“{...}”比xml标记要紧凑得多(除非你尽可能使用空格,比如“1 2 3 4”)。

答案 5 :(得分:1)

您可能需要阅读JSON: The Fat-Free Alternative to XML。使用JSON,您可以在请求的源和目标之间来回回调,并实际在您现有的Javascript代码中轻松使用它。

答案 6 :(得分:1)

链接dirkgently提供了一个很好的差异概要(滚动到底部)。重点是:

JSON:更小,可以代表所有unicode字符(xml不能在UTF8中,至少,它自己的规范)。在AJAX应用程序中使用它也是微不足道的(因为javascript的eval()函数),尤其是更高级的功能,如jsonp(响应调用回调)。

XML:有许多工具可以轻松查询其结构。自从它更老,更成熟以来,它一般也有更多的工具支持。

一般来说,他们可以完成相同的事情(你可以通过xml做jsonp,它只需要手动解析回调)。

答案 7 :(得分:0)

我认为Json的另一个优点是它不使用&lt;&gt;括号,您可以将html代码放入其中而不会产生太多混淆。