JSON与XML的比较研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<request>
<firstName>Brett</firstName>
<lastName>McLaughlin</lastName>
XML 即可扩展标记语言(Extensible Markup Language),是一种平台无关的表示
数据的方法。
简单地说,使用 XML 创建的数据可以被任何应用程序在任何平台上
读取。
甚至可以通过手动编码来编辑和创建 XML文档。
其原因是,XML与HTML
一样,都是建立在相同的基于标记技术基础之上。
目前,XML的主要用途包
括: 1.1.1 数据存储。
在以数据为中心的信息(比如在某个数据库查找到的数据)
和以文档的中心的信息(比如将数据存储在XML中,以便在不同的环境中显示出来)这两个方面,XML 都有自己的优势。
1.1.2 Web服务。
Web服务最初用于在HTTP上传递非HTML信息。
它们如今已成为通过Ajax 获取字段的基础,用于向Web 站点、面向服务体系结构(Service Oriented Architecture ,SOA)和复杂的基于消息的应用程序添加交互性。
XML是Web服务领域不可或缺的一部分。
W eb
服务中的所有主流方法,如 SOAP、REST甚至XML-RPC,都是基于XM的。
1.1.3 播客和其他数据联合。
现在,XML最普遍的应用是数据联合领域。
数百万
的博克用户都在使用RSS提要订阅他们所喜爱的博客上的最新信息。
而RSS本身
就是基于XML语言的。
1.2 JSON基础
JSON(javascript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
同时,也易于机器解析和生成。
它基于javascript Programming Language, Standard ECMA -262 3rd Edition - December 1999的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯
(包括C, C++, C#, JAVA, javascript, Perl, Pytho n等)。
这些特性使JSON成为理想
的数据交换语言。
JSON 建构于2种结构:①“名称/值”对的集合(A collectionof name/value pairs) 。
不
同的语言中, 它被理解为对象、纪录、结构、字典、哈希表、有键列表, 或者关联数组。
② 值的有序列表。
例如,在引言中的XML文档用JSON的语法可以表示为:
JSON 和XML 都是非常成熟的结构化数据表示方法,两者都是基于文本的, 且都使
用Unicode 编码, 一样具有可读性。
最重要的是,它们都是自描述的语言,这对于
数据格式而言是一种很重要的特征。
2 JSON和XML比较 2.1 解析方案比较
如果只是要表达一个数据结构,把一组数据作为一个整体存放起来或用于传输,那么这就是一个轻量级的应用。
无论你有多少数据,都只能算是轻量级的应用。
即
可以使用JSON,也可以使用XML。
相对于JSON而言,XML可以算是重量级的数据格式,这主要体现在解析上,XML
有两种解析方式:DOM和SAX。
DOM把一个XML整体解析成一个DOM对象,
这一点和JSON把JSON文字解析成对象是一样的。
SAX是一个类似消息驱动的解
析方法,不需要把整个文档都解析完就可以对解析出的内容进行处理。
每当解析
出一个对象时,都会通知到程序的处理代码以处理这个对象。
程序也可以随时中
止解析。
这样,一个大的文档就可以逐步地展现出来。
如果在网络上传输数据流,那么在传输的过程中,已传输的部分就已经被处理了。
这一点,JSON是做不到的,至少目前的JSON程序组件并没有支持这种解析方法,JSON只提供整体解析的方案。
在普通的 Web应用中,无论是服务器端生成或处理XML,还是客户端用javascript解析XML ,都常常导致复杂的代码,极低的开发效率。
此外,javascript 语言中会不仅会把来自Web 表单的数据放进请求中,而且经常用对象来表示数据。
在这些情况下,从javascript对象中提取数据,然后再将数据放进名称/值对或XML,就有点儿多此一举,这时就适合使用JSON。
JSON为Web应用开发者提供了另一种数据交换格式,允许将javascript对象转换
成可以随请求发送的数据(同步或异步都可以)。
但是,JSON只提供了整体解析
方案,而这种方法只在解析较少的数据时才能起到良好效果;而XML提供了对大
规模数据的逐步解析方案,这种方案很适用于对大量数据的处理。
2.2 易用性比
较
使用DOM对XML进行解析有些复杂,网上有一些开源的解析程序,但对于初学者,理解起来不是特别容易。
JAVA语言的XML支持包相对而言比较好用,有点
编程基础的人容易理解。
另外,在使用C/C++进行XML解析的时候,可以使用tinyxml一类的库。
在Windows中开发程序时,效率比较高的解析XML的技术是MSXML,虽然直接使用比较困难,但是如果对其进行包装,还是比较容易使用的。
JSON是一种轻量级的数据交换格式,人们读写更加容易,易于机器的解析和生成,
最为重要的是,不用学习新的API,通过javascript中eval()函数就可以解析JSON,获得经过格式化的数据。
所以,在WEB应用时,如果服务端用JAVA,客户端使
用javascript,这时选择用JSO N来传输数据,不仅表达上更为简介,解析也更为
方便,并且具有更好的通用性。
3 总结。