对于ajax请求,json vs xml有哪些优缺点? 性能有差异吗?即浏览器是否能够比另一种更快地处理一种格式?
答案 0 :(得分:17)
总之,JSON(可以被认为是JavaScript的一个子集)比XML更精简。这有几个积极的副作用
->
更容易解析(更快的解析)在我对这个问题的原始回答中,我对JSON的看法是JavaScript,我认为它是一个近亲。但是JSON是独立的,JSON.org在描述JSON方面做得很好。它还提供了JavaScript兼容性库,在浏览器不支持时添加了对JSON.parse
和JSON.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 强>
<强> JSON 强>
<script>
标记导入,则最重要的优点是JSON可以绕过JavaScript的同源策略。有关血淋淋的详细信息,请参阅Simon Willison's example
JavaScript不允许您访问来自其他服务器的文档(无论是XML还是HTML)。但是,如果您将JSON文件作为脚本标记导入,则可以避免此问题,并且可以将任何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代码放入其中而不会产生太多混淆。