JSON与XML的比较研究
(内蒙古财经学院计算机信息管理学院,内蒙古 呼和浩特 010070)
摘 要:文章从解析方法和易用性两个方面对JSON与XML 二者进行了 比较和分析,指出在Ajax Web领域,JSON无疑是一个更好的选择。关键词:JS ON;XML;Ajax;数据格式;比较分析
中图分类号:TP311.52 文献标识码:A 文章编号: 1007—6921(2009)24—0122—01
在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。例如,Web 在进行数据传输时通过GET 请求发送的信息就是采用简单的名称/值对的文本格式,并将数 据组合成下面这样的形式:
firstName =Brett&lastName =McLaughlin&email =brett@newInstance.com
此外,XML 也已经在Ajax 应用程序中广泛使用。上面纯文本的数据在使用XML 进行数据传 输,通常使用的是以下的数据格式:
<request>
<firstName>Brett</firstName>
<lastName>McLaughlin</lastName>
<email>brett@newInstance.com</email></request>而JSON 是比纯文本类型更适合在A jax web 应用程序中使用的数据格式。JSON和XML都是非常成熟的结构化数据表示方法。那 么,传输数据时,是该选择XML还是JSON来表示数据呢?
1 XML与JSON的基础
1.1 XML基础
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的语法可以表示为:
{ “firstName”: “Brett”, “lastName”:“McLaughlin”, “email”: “brett@newI nstance.com” }
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 总结
XML与JSON,一个是规范的标签形式,一个是建议的语法。可 扩展性上相比,两者都有很好的扩展性,没有什么XML能扩展JSON不能的;编码难度上相比 ,JSON编码明显比XML容易的多,即使不借助工具也能写出JSON的代码,但要写好XML又不借 助编码工具就难多了;解码难度上相比,XML的解析需考虑子节点父节点,让人头昏眼花, 而JSON的解析难度几乎为0;流行度上相比,XML虽已经被业界广泛的使用,而JSON在Ajax w eb这个特定的领域,JSON无疑具有更好的发展前景。
[参考文献]
[1] 桑贝斯.李松峰,译.javascript DOM 高级程序设计[M].北京:人民邮电出版 社,2008.
[2] Introducing JSON[EB/OL].http://www.json.org/.
[3] 古凌岚. XML 技术及应用[M].北京:中国水利水电出版社,2008.
热门文章:
- 2024年学习廉洁《警示案例教...2023-12-26
- 2024XX县委书记在重阳节离退...2023-12-26
- 2024年XX政协主席在区委主题...2023-12-26
- 2024支部书记关于人居环境整...2023-12-25
- 2024党组织规范化建设工作实...2023-12-25
- 全民国家安全教育日心得感悟...2023-12-07
- 实体店双十一活动方案6篇2023-12-06
- 甄选企业出纳个人工作总结多...2023-12-06
- “中秋节”主题创意活动方案8篇2023-12-06
- 全县组织工作会议交流材料3篇2023-12-06
相关文章:
- 产品设计中形研究论文&产品品...2021-08-27
- 计算机维护系统软件应用研究2021-08-27
- 五年级下册语文研究报告对于姓氏2021-08-27
- 研究生课程学习总结2021-08-27
- 科学研究工作能力自我评价2021-08-31
- 研究性学习的理论与实践简介2021-09-09
- 党建研究会工作报告2021-09-09
- 后勤工作研究课题2021-09-11
- 国际税收研究会秘书长事迹2021-09-13
- 优秀研究成果评选奖励办法2021-09-14