当前位置:  开发笔记 > 编程语言 > 正文

什么时候更喜欢JSON而不是XML?

如何解决《什么时候更喜欢JSON而不是XML?》经验,为你挑选了9个好方法。

我的要求就是在展开时显示从数据库中检索的一组值.我正在使用jquery.



1> Robert Rossn..:

当任何这些都成立时,支持XML而不是JSON:

您需要消息验证

你正在使用XSLT

您的邮件包含大量标记文本

您需要与不支持JSON的环境进行互操作

当所有这些都成立时,支持JSON over XML:

消息不需要验证,或验证它们的反序列化很简单

您没有转换消息,或者转换它们的反序列化很简单

您的邮件主要是数据,而不是标记文本

消息传递端点具有良好的JSON工具


当所有条件都相同时,赞成JSON有两个原因:JSON比XML解析要轻得多(CPU友好)并且需要更少的数据传输(网络友好).
在处理标记文本时,JSON没有提供优于XML的任何优势.但我明白你的观点; 这可能被夸大了.
为什么不想在json数据中标记文本?

2> dkretz..:

除非我需要使用XML,否则我使用JSON.它更容易理解,并且(因为它需要更少的配置开销)如果库在您的上下文中可用,则更容易编写读取和写入,并且它们现在非常普遍.

当亚马逊首次将其目录公开为Web服务时,他们同时提供了JSON和XML.90%的实施者都选择了JSON.


"我使用JSON,除非我需要使用XML." 〜完全正确.
几个可能的原因,包括我不想重写的现有软件.但最重要的是使用XML作为数据交换格式,我不控制两端,或者有一个适用且需要XML的正式标准.当我是唯一涉及的开发者时,我只能随意选择.
因此,更深层次的问题是"出于什么原因,您需要使用XML?" 这些原因是愚蠢的吗?或者他们只是从你的不同角度反映出不同的顾虑?

3> urig..:

考虑到您在客户端已经在使用javascript的特定情况,我会选择JSON,原因如下:

由于JSON是javascript的原生代码,因此您必须在客户端编写更少的代码 - 只需eval()(或者更好JSON.parse())JSON字符串并获取可以使用的对象.

同时,在客户端评估JSON将更有效,因此更快.

JSON序列化产生的字符串比XML短.使用JSON将减少在线路上运行的数据量,并在这方面提高性能.

这里有一些进一步的阅读:http://www.subbu.org/blog/2006/08/json-vs-xml


取自json.org:eval功能非常快.但是,它可以编译和执行任何JavaScript程序,因此可能存在安全问题.当源是可信的并且胜任时,指示使用eval.使用JSON解析器更安全
是不是'eval()`JSON是一个大禁忌?
首选JSON.parse()到eval().

4> null..:

我在XML vs JSON中遇到的其他一些问题:

JSON非常适合

名称/值对

嵌套那些对

这意味着它倾向于喜欢数组或嵌套数组.但是JSON缺少两者

属性

命名空间

因此,如果您要组合两个或更多JSON服务,则可能存在潜在的命名空间冲突.据说JSON可用于在我的经验中交换数据时可用于XML的大约90%相同的事情.


你需要什么属性?如果您的元素包含其他值,请将其设为对象 - 成员是您的"属性".坦率地说,我认为XML的bifurcal属性/容器结构完全不利.

5> Eugene Lazut..:

通常JSON更紧凑,解析速度更快.

首选XML,如果:

您需要在客户端上处理数据,并且可以利用XSL.有可能XML + XSL链比JSON + JavaScript工作得更快,特别是对于大块数据.

一个很好的例子是将数据转换为HTML片段.

各种遗留案件:

有一个现有的XML服务,由于某些原因,用JSON重写它是一件麻烦事.

在使用用户输入进行一些轻量处理之后,您必须将此数据作为XML发布回来.

(几乎)XML的一个重要案例:尝试检测何时发送HTML片段比发送原始数据更有益.AHAH可以在简单的应用程序中创造奇迹,但经常被忽视.通常,此样式假定服务器发送的HTML片段将在网页中内联而不进行处理.

通常在AHAH案例中,CSS可以最大限度地利用视觉按摩片段并实现简单的条件,例如使用特定于用户或特定于应用程序的设置隐藏/显示片段的相关部分.



6> strager..:

JSON很容易解析.XML解析起来有点困难,解析和传输速度较慢(在大多数情况下).

由于您使用的是jQuery,我建议使用JSON:jQuery可以检索JSON数据并自动将其转换为Javascript对象.实际上,您可以使用eval将JSON数据转换为Javascript对象.XML必须由您手动遍历(我不知道它在Javascript中是如何工作的,但在大多数语言中我使用XML库都很困难/更烦人).


JSON不是javascript对象,除非它在javascript中实例化.它恰好遵循用于序列化javascript对象的格式,但它可以从大多数语言中访问(使用适当的附加组件和内置函数),至少与XML一样容易.

7> 小智..:

就客户端浏览器处理数据所需的处理而言,JSON总是更可取的.此外,JSON是轻量级数据交换格式.

XML解析总是消耗大量的浏览器资源,除非另有要求,否则应尽可能避免.



8> mythz..:

我有一篇关于这个主题的博客文章,详细介绍了Web协议的历史(即SOAP,XML,JSON,REST,POX等),它们提供了摘要以及每个协议的优点和缺点:http://www.servicestack.net/mythz_blog/p = 154

实际上,我认为通过比较动态(JSON)和静态(XML)语言之间的差异,您可以在XML和JSON之间绘制许多相似之处.

基本上,XML是一种更严格,更严格的序列化格式,可以选择使用附带的模式(可以是XSD或DTD)进行验证.XSD非常复杂,允许您描述许多不同类型,例如日期,时间,枚举,用户定义类型甚至类型继承等.SOAP有效地构建在XML功能集之上,提供描述Web服务的标准化方法(例如,类型和操作)通过WSDL.WSDL规范的详细程度和复杂性意味着开发可能会更加繁琐,但同时可以使用更多工具,大多数现代语言都提供自动化工具来生成客户端代理,从而承担一些负担尝试与外部服务进行互操作时关闭.

如果您有一个定义明确的"企业服务",不经常更改或者您的Web服务需要从许多不同的语言访问,我仍然建议您使用XML作为Web服务.

尽管如此,XML也有缺点.它依赖于命名空间以提供类型化的可扩展格式,并允许您在同一文档中指定属性和元素.在一个文档中使用不同的命名空间意味着在使用Xml Parser提取数据时很多时候,您还需要提供要检索/遍历的每个元素的命名空间.它还可以推断有效载荷,使其更加冗长.具有输出属性和元素的选项意味着您的类不能很好地映射到XML文档.仅这些功能使其成为大多数语言的程序设计,使得使用起来更加繁琐和繁琐.

另一方面,JSON在很多方面与XML完全相反,因为它的类型非常松散,并且只支持基本类型:Number,Bool,string,Objects和Arrays.其他一切基本上都必须符合字符串.当尝试跨语言边界进行通信时,这并不是很好,因为如果要支持更具体的类型,则需要遵守一些带外非标准规范.从好的方面来说,它的有限特性集可以很好地适应大多数语言 - 并且非常适合JavaScript,因为JSON字符串可以直接在JavaScript对象中进行评估.

尺寸和性能

我有一些Northwind数据库基准可用,比较了Microsofts XML和JSON实现之间的大小和速度.基本上,XML的大小是JSON的2倍,但同时看起来微软在优化XML DataContractSerializer方面投入了大量精力,因为它比JSON快了30%.看来你必须在尺寸和性能之间进行权衡.对这个事实不满意,我决定编写自己的快速JsonSerializer,它现在比MS的XML快了2.6倍 - 两者都是最好的:).



9> lowglider..:

如果我需要验证传入数据的块,我会选择XML over JSON,因为XML通过XSD本身支持这一点.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有