我的需求只是从数据库中检索出一组值并在表格上显示它们。我正在使用jQuery。
在以下情况下使用XML而不是JSON:
在以下所有情况都成立时,请使用JSON而不是XML:
除非必须使用XML,否则我会使用JSON。JSON更易于理解,并且(由于需要更少的配置开销)如果在您的上下文中可用库,则读写编程更容易。现在这些库相当普遍。
当亚马逊首次将其目录作为Web服务公开时,他们提供了JSON和XML两种格式。大约90%的实现者选择了JSON。
考虑到你已经在客户端上使用JavaScript的具体情况,我会选择JSON,原因如下:
由于JSON是JavaScript本地支持的格式,因此在客户端编写代码时可以写更少的代码-只需 eval()
(或者最好用 JSON.parse()
)JSON字符串,然后获取可用的对象。
同时,在客户端上评估JSON将更有效率,因此更快。
与XML相比,JSON序列化会产生更短的字符串。使用JSON将减少通过网络传输的数据量,并从这方面提高性能。
这里有一些进一步阅读的材料:http://www.subbu.org/blog/2006/08/json-vs-xml
eval()
处理 JSON 是一个大忌,这个操作需要被改变。 - shoosh我在XML和JSON领域遇到的一些其他事情:
JSON非常适用于
这意味着它倾向于使用数组或嵌套数组。 然而,JSON缺少以下两个内容:
因此,如果您要组合两个或更多JSON服务,则可能会出现命名空间冲突。 话虽如此,根据我的经验,当交换数据时,JSON可以用于大约与XML相同的90%的事情。
通常JSON更加紧凑,解析速度更快。
如果满足以下条件之一,请优先选择XML:
(几乎)等同于XML的一个重要用例:尝试检测何时发送HTML片段比发送原始数据更有利。 在简单的应用中,AHAH可以发挥奇妙的作用,但经常被忽视。通常,此样式假定服务器发送的HTML片段将被内联在网页中而无需处理。
通常,在AHAH情况下,CSS被充分利用以在视觉上操纵片段,并使用用户特定或应用程序特定设置实现简单的条件语句,例如隐藏/显示片段的相关部分。
在处理数据时,使用JSON格式始终比XML更可取,因为客户端浏览器需要进行的解析工作更少。此外,JSON是一种轻量级数据交换格式。
XML解析会占用大量浏览器资源,除非必要,否则应尽可能避免使用。
JSON易于解析,速度更快。XML解析稍微困难一些,解析和传输速度较慢(在大多数情况下)。
由于您正在使用jQuery,建议使用JSON:jQuery可以检索JSON数据并自动将其转换为Javascript对象。实际上,您可以 使用eval将JSON数据转换为Javascript对象。XML必须由您手动遍历(我不知道在Javascript中如何工作,但在我使用XML库的大多数语言中,这是困难/更烦人的)。
如果您有一个明确定义的“企业服务”或您的Web服务需要从许多不同的语言中访问,我仍然建议您使用XML作为您的Web服务。
尽管XML有许多好处,但也存在缺点。它依赖于命名空间以提供一种类型化的可扩展格式,并使您能够在同一文档中指定属性和元素。在一个文档中具有不同的命名空间意味着当使用Xml解析器提取数据时,大部分时间您还需要提供要检索/遍历的每个元素的命名空间。它还推断出有效载荷,使其比必须的更冗长。选择输出属性以及元素意味着您的类无法很好地映射到XML文档。这些特性使其在大多数语言中都不适合作为编程工具,使其更加繁琐和笨重。微软已经在他们的DataContract序列化程序中认识到并简化了这一点,通过取消XML属性,只将您的类的属性映射到Xml元素。如果我需要验证传入数据的块,我会选择XML而不是JSON,因为XML通过XSD天然支持此功能。
当您选择JSON路线时,您会遇到XML在10年前面临的相同问题:
将来自两个不同来源的数据混合到一个JSON数据包中可能会导致元素标签相互冲突。如果搞错了装箱单和发票,那么“From”地址可能意味着完全不同的东西。这就是为什么XML有命名空间。
在不同的JSON结构之间进行转换需要编写单调乏味的代码。更声明性的数据映射方式可以使工作变得更加容易。这就是为什么XML有XSLT。
描述JSON数据包的结构-其字段、数据类型等-对于人们连接到您的服务非常必要。因此,必须拥有元数据语言。这就是为什么XML有模式。
同时进行两个客户端-服务器对话需要小心处理。如果您向服务器提出两个问题并得到一个答案,那么您如何知道它回答了哪个问题?这就是为什么XML有WS-Correlation。