此刻互联网上,最流行的两大传输数据的标准便是json和XML了,关于谁是最好的,始终败兴都是人们争论的专题,其实各有各的缺点和优点;
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其拥有结构性的标记语言,能够用来标记数据、定义数据类型,是一种准许用户对自己的标记语言进行定义的源语言。 XML运用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已作为业界公认的标准。
XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 供给统一的办法来描述和交换独立于应用程序或供应商的结构化数据。
(2).JSON定义
JSON(JavaScript Object Notation)一种轻量级的数据交换格式,拥有良好的可读和便于快速编写的特性。可在区别平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同期亦具备类似于C语言的习惯(包含C, C++, C#, Java, JavaScript, Perl, Python等)体系的行径。这些特性使JSON作为理想的数据交换语言。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。
2.XML和JSON优缺点
(1).XML的优缺点
<1>.XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺点
A.XML文件庞大,文件格式繁杂,传输占带宽;
B.服务器端和客户端都需要花费海量代码来解析XML,导致服务器端和客户端代码变得反常繁杂且很难守护;
C.客户端区别浏览器之间解析XML的方式不一致,需要重复编写非常多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
(2).JSON的优缺点
<1>.JSON的优点:
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript能够简单的经过eval()进行JSON数据的读取;
C.支持多种语言,包含ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已然有PHP-JSON和JSON-PHP显现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的拜访提取;
E.由于JSON格式能直接为服务器端代码运用,大大简化了服务器端和客户端的代码研发量,且完成任务不变,并且易于守护。
<2>.JSON的缺点
A.无XML格式这么推广的深入人心和喜用广泛,无XML那样通用性;
B.JSON格式日前在Web Service中推广还属于初级周期。
3.XML和JSON的优缺点对比
(1).可读性方面。
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓平起平坐,一边是意见的语法,一边是规范的标签形式,XML可读性较好些。
(2).可扩展性方面。
XML天生有很好的扩展性,JSON当然亦有,无什么是XML能扩展,JSON不可的。
(3).编码难度方面。
XML有丰富的编码工具,例如Dom4j、JDom等,JSON亦有json.org供给的工具,然则JSON的编码显著比XML容易许多,即使不借助工具亦能写出JSON的代码,可是要写好XML就不太容易了。
(4).解码难度方面。
XML的解析得思虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
(5).流行度方面。
XML已然被业界广泛的运用,而JSON才刚才起始,然则在Ajax这个特定的行业,将来的发展必定是XML让位置于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
(6).解析手段方面。
JSON和XML一样持有丰富的解析手段。
(7).数据体积方面。
JSON相针对XML来讲,数据的体积小,传递的速度更快些。
(8).数据交互方面。
JSON与JavaScript的交互更加方便,更易解析处理,更好的数据交互。
(9).数据描述方面。
JSON对数据的描述性比XML较差。
(10).传输速度方面。
JSON的速度要远远快于XML。
4.XML与JSON数据格式比较
(1).关于轻量级和重量级
轻量级和重量级是相对来讲的,那样XML相针对JSON的重量级表现在哪呢?应该表现在解析上,XML日前设计了两种解析方式:DOM和 SAX。
<1>.DOM
DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件全部读入内存,这一点上JSON和XML的原理是同样的,然则XML要思虑父节点和子节点,这一点上JSON的解析难度要小非常多,由于JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;
<2>.SAX
SAX不需要全部读入文档就能够对解析出的内容进行处理,是一种逐步解析的办法。程序亦能够随时终止解析。这般,一个大的文档就能够逐步的、一点一点的展现出来,因此SAX适合于大规模的解析。这一点,JSON日前是做不到得。
因此,JSON和XML的轻/重量级的区别在于:
JSON只供给整体解析方法,而这种办法仅在解析较少的数据时才可起到良好的效果;
XML供给了对大规模数据的逐步解析方法,这种方法很适合于对海量数据的处理。
(2).关于数据格式编码及解析难度
<1>.在编码方面。
虽然XML和JSON都有各自的编码工具,然则JSON的编码要比XML简单,即使不借助工具,亦能够写出JSON代码,但要写出好的XML代码就有点困难;与XML同样,JSON亦是基于文本的,且它们都运用Unicode编码,且其与数据交换格式XML同样拥有可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON网站供给了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
<2>.在解析方面。
在普通的web应用行业,研发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常引起繁杂的代码,极低的研发效率。
实质上,针对大都数Web应用来讲,她们基本不需要繁杂的XML来传输数据,XML宣叫作的扩展性这里就很少拥有优良,许多Ajax应用乃至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的繁杂性,但同期缺少了必定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 供给了更好的简单性和灵活性。在Web Serivice应用中,最少就日前来讲XML仍有不可动摇的地位。