JSON与XML优缺点对⽐分析
本⽂从各个⽅⾯向⼤家对⽐展⽰了json和xml的优缺点,⼗分的全⾯细致,有需要的⼩伙伴可以参考下。
python处理xml文件1. 定义介绍
1.1 XML定义
扩展标记语⾔ (Extensible Markup Language, XML) ,⽤于标记电⼦⽂件使其具有结构性的标记语⾔,可以⽤来标记数据、定义数据类型,是⼀种允许⽤户对⾃⼰的标记语⾔进⾏定义的源语⾔。 XML使⽤DTD(document type definition)⽂档类型定义来组织数据;格式统⼀,跨平台和语⾔,早已成为业界公认的标准。
XML是标准通⽤标记语⾔ (SGML) 的⼦集,⾮常适合 Web 传输。XML 提供统⼀的⽅法来描述和交换独⽴于应⽤程序或供应商的结构化数据。
1.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优缺点
2.1 XML的优缺点
XML的优点:
A.格式统⼀,符合标准;
B.容易与其他系统进⾏远程交互,数据共享⽐较⽅便。
XML的缺点:
A.XML⽂件庞⼤,⽂件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费⼤量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不
易维护;
C.客户端不同浏览器之间解析XML的⽅式不⼀致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
2.2 JSON的优缺点
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格式能直接为服务器端代码使⽤,⼤⼤简化了服务器端和客户端的代码开发量,且完成
任务不变,并且易于维护。JSON的缺点:
A.没有XML格式这么推⼴的深⼊⼈⼼和喜⽤⼴泛,没有XML那么通⽤性;
B.JSON格式⽬前在Web Service中推⼴还属于初级阶段。
3. XML和JSON的优缺点对⽐
可读性⽅⾯:
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,⼀边是建议的语法,⼀边是规范的标签形式,XML可读性较好些。
可扩展性⽅⾯:
XML天⽣有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
编码难度⽅⾯:
XML有丰富的编码⼯具,⽐如Dom4j、JDom等,JSON也有提供的⼯具,但是JSON的编码明显⽐XML容易许多,即使不借助⼯具
也能写出JSON的代码,可是要写好XML就不太容易了。
解码难度⽅⾯:
XML的解析得考虑⼦节点⽗节点,让⼈头昏眼花,⽽JSON的解析难度⼏乎为0。这⼀点XML输的真是没话说。
流⾏度⽅⾯:
XML已经被业界⼴泛的使⽤,⽽JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展⼀定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
解析⼿段⽅⾯:
JSON和XML同样拥有丰富的解析⼿段。
数据体积⽅⾯:
JSON相对于XML来讲,数据的体积⼩,传递的速度更快些。
数据交互⽅⾯:
JSON与JavaScript的交互更加⽅便,更容易解析处理,更好的数据交互。
数据描述⽅⾯:
JSON对数据的描述性⽐XML较差。
传输速度⽅⾯:
JSON的速度要远远快于XML。
4.XML与JSON数据格式⽐较
4.1 关于轻量级和重量级
轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?应该体现在解析上,XML⽬前设计了两种解析⽅式:DOM和SAX。
DOM:
DOM是把⼀个数据交换格式XML看成⼀个DOM对象,需要把XML⽂件整个读⼊内存,这⼀点上JSON和XML的原理是⼀样的,但是XML要考虑⽗节点和⼦节点,这⼀点上JSON的解析难度要⼩很多,因
为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;
SAX:
SAX不需要整个读⼊⽂档就可以对解析出的内容进⾏处理,是⼀种逐步解析的⽅法。程序也可以随时终⽌解析。这样,⼀个⼤的⽂档就可以逐步的、⼀点⼀点的展现出来,所以SAX适合于⼤规模的解析。这⼀点,JSON⽬前是做不到得。
所以,JSON和XML的轻/重量级的区别在于:
JSON只提供整体解析⽅案,⽽这种⽅法只在解析较少的数据时才能起到良好的效果;
XML提供了对⼤规模数据的逐步解析⽅案,这种⽅案很适合于对⼤量数据的处理。
4.2 关于数据格式编码及解析难度
在编码⽅⾯:
虽然XML和JSON都有各⾃的编码⼯具,但是JSON的编码要⽐XML简单,即使不借助⼯具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML⼀样,JSON也是基于⽂本的,且它们都使⽤Unicode编码,且其与数据交换格式XML⼀样具有
可读性:
主观上来看,JSON更为清晰且冗余更少些。JSON⽹站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML⽐较适合于标记⽂档,⽽JSON却更适于进⾏数据交换处理。
在解析⽅⾯:
在普通的web应⽤领域,开发者经常为XML的解析伤脑筋,⽆论是服务器端⽣成或处理XML,还是客户端⽤ JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。
实际上,对于⼤多数Web应⽤来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应⽤甚⾄直接返回HTML⽚段来构建动态Web页⾯。和返回XML并解析它相⽐,返回HTML⽚段⼤⼤降低了系统的复杂性,但同时缺少了⼀定的灵活性。同XML或 HTML⽚段相⽐,数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应⽤中,⾄少就⽬前来说XML仍有不可动摇的地位。
实例⽐较:
XML和JSON都使⽤结构化⽅法来标记数据,下⾯来做⼀个简单的⽐较。⽤XML表⽰中国部分省市数据如下:
1
2
3
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32<?xml version="1.0"encoding="utf-8"?> <country>
<name>中国</name>
<province>
<name>⿊龙江</name>
<citys>
<city>哈尔滨</city>
<city>⼤庆</city>
</citys>
</province>
<province>
<name>⼴东</name>
<citys>
<city>⼴州</city>
<city>深圳</city>
<city>珠海</city>
</citys>
</province>
<province>
<name>台湾</name>
<citys>
<city>台北</city>
<city>⾼雄</city>
</citys>
</province>
<province>
<name>新疆</name>
<citys>
<city>乌鲁⽊齐</city>
</citys>
</province>
</country>
⽤JSON表⽰中国部分省市数据如下:1
2 3 4 5 6 7 8 9 10var country =
{
name: "中国",
provinces: [
{ name: "⿊龙江", citys: { city: ["哈尔滨", "⼤庆"]} }, { name: "⼴东", citys: { city: ["⼴州", "深圳", "珠海"]} }, { name: "台湾", citys: { city: ["台北", "⾼雄"]} },
{ name: "新疆", citys: { city: ["乌鲁⽊齐"]} }
]
}
编码的可读性来说,XML有明显的优势,毕竟⼈类的语⾔更贴近这样的说明结构。JSON读起来更像⼀个数据块,读起来就⽐较费解了。不过,我们读起来费解的语⾔,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“⿊龙江”这个值。
编码的⼿写难度来说,XML还是舒服⼀些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空⽩制表以及换⾏的话,JSON 就是密密⿇⿇的有⽤数据,⽽XML却包含很多重复的标记字符。
以上所述就是本⽂的全部内容了,希望⼤家能够喜欢。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论