JSON解析与 XML解析的区别比较

一.定义介绍

 (1).XML 定义

扩展标记语言(Extensible Markup Language, XML), 用于标记电子文件使其具有结构性的标记语言, 可以用来标记数据,定义数据类型, 是一种允许用户对自己的标记语言进行定义的源语言. XML使用 DTD(document type defintion文档类型定义来组织数据,格式统一,跨平台和语言,早已成为业界公认的标准.

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 的一个子集.


二. 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 中推广还属于初级阶段.


三.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.

5.流行度方面

XML 已经被业界广泛的使用,而 JSON 才刚刚开始,但是在 Ajax 这个特定的领域,未来的发展一定是 XML让位于 JSON. 倒是 Ajax应该变成 Ajaj(Asynchronous Jacascript and JSON)了.

6.解析手段方面

JSON 和 XML 同样拥有丰富的解析手段

7.数据体积方面

JSON 相对于 XML来讲,数据的体积小,传递的速度更快些.

8.数据交互方面

JSON 与 JavaScript 的交互更加方便, 更容易解析处理,更好的数据交互

9.数据描述方面

JSON 对数据的描述性比 XML较差

10.传输速度方面

JSON 的速度要远远快于 XML.


四. XML 与 JSON 数据格式比较

1.关于轻量级和重量级

轻量级和重量级是相对来说的,主要体现在解析上 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仍有不可动摇的地位。

(3).实例比较

XML和JSON 都使用结构化方法来标记数据,下面来做一个简单的比较.

①.用 XML 表示中国部分省市如下

<?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 表示中国部分省市数据如下

var country =
        {
            name: "中国",
            provinces: [
            { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
            { name: "台湾", citys: { city: ["台北", "高雄"]} },
            { name: "新疆", citys: { city: ["乌鲁木齐"]} }
            ]
        }


编码的可读性来说 ,XML 有明显的优势,毕竟人类的语言更贴近这样的说明结构.JOSN 读起来更像一个数据块,读起来就比较费解了.不过,我们读起来费解的语句,恰恰是适合机器阅读,所以通过 JSON 的索引 country,provinces[0].name 就能够读取"黑龙江"这个值.

编码的手写难度来说, XML 还是舒服一些,好读当然就好写.不过写出来的字符 JSON 就明显少很多.去掉空白制表以及换行的话, JSON 就是密密麻麻的有用数据,而 XML 却包含很多重复的标记字符.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值