XML与JSON的区别及优缺点

/ 0评 / 0

XML

1.定义

扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标准通用标记语言 (SGML) 的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

2.优点

1.格式统一,符合标准;
2.容易与其他系统进行远程交互,数据共享比较方便;
3.调用将 XML 用作传输的现有服务;
4.使用 XSLT 可以动态转换 XML,这是企业服务总线 (ESB) 方案中的理想功能。

3.缺点

1.XML文件格式文件庞大,格式复杂,传输占用带宽;
2.服务器端和客户端都需要花费大量代码来解析XML,不论服务器端和客户端代码变的异常复杂和不容易维护;
3.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
4.服务器端和客户端解析XML花费资源和时间。

JSON

JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。

2.优点

1.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小,浏览器解析快;
2.易于解析这种语言,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
3.构造友好,支持多种语言,包括ActionScript, C,C#,ColdFusion,Java,JavaScript,Per,PHP,Python,Ruby等语言服务器端语言,便于服务器端的解析;
4.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,便于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能够直接生JSON格式,便于客户端的访问提取;
5.因为JSON格式能够直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护;
6.相当稳定,JSON 的附加内容将成为超集。

3.缺点

1.没有XML格式这么推广的深入人心和使用广泛,没有XML那么通用性;
2.JSON格式目前在Web Service中推广还属于初级阶段。

两者的区别

1.JSON的编码更为清晰且冗余更少些,而XML比较适合于标记文档。JSON网站提供了对JSON语法的严格描述,只是描述较简短。JSON更适于进行数据交换处理。
2.XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读。
3.在可读性方面,JSON和XML的数据可读性基本相同。JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。
4.在可扩展性方面,XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
5.在编码难度方面,XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
6.在解码难度方面,XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
7.在流行度方面,XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
8.JSON和XML同样拥有丰富的解析手段。
9.JSON相对于XML来讲,数据的体积小。
10.JSON与JavaScript的交互更加方便。
11.JSON对数据的描述性比XML较差。
12.JSON的速度要远远快于XML。

难易选择

1.在编码上,虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。
2.主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
3.在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。
4.实际上,对于大多数web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势;许多Ajax应用甚至直接返回HTML片段来构建动态web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在web serivice应用中,至少就目前来说XML仍有不可动摇的地位。
个人觉得一般来说:配置文件用XML,传输数据用JSON(所谓的轻量级体现的解析上;逐步解析用XML(SAX技术可以边传输边解析),整体解析用JSON(目前只能整体一次性解析);大规模数据传输用XML,小数据用JSON。

评论已关闭。