作者:苏林
数据要传输,就需要把数据表示出来。用什么格式来表示数据,这是个问题。 JSON和XML都是非常成熟的结构化数据表示方法。大多有经验开发者都不愿意自己重新定义数据表示的格式,因为那样的确费力不讨好,毕竟很多人都看到了自己和天才之间的差距。但在选择数据的表示方法时,却是各执一词,为选择JSON还是XML争论不休。 先简要介绍一下这两种数据表达方法: JSON:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。(取自www.Json.org) XML: XML 全称是可扩展标记语言(EXtensible Markup Language),是一种类似与HTML的语言,是被设计用来描述数据的语言。在XML中没有预先定义的标签(tags,在html中就是类似与,之类的东西);XML 是能够自解释(self describing)的语言;XML 使用DTD(Document Type Definition文档类型定义)来显示这些数据。 以上只是从网上找的一些简单片段,如果您需要了解更多详细信息,请使用搜索引擎:) XML产生较早,这种清晰易读的结构化数据表示方法立刻风行天下,很多软件都使用XML来保存配置信息,在您的机器上搜索一下,一定能找到不少扩展名为.xml的文件。 JSON是如何产生的,我在网上没有搜到这些资料,笔者猜测它也许是JavaScript的副产品。当初设计JavaScript的时候,可能设计人员想设计一个简单的结构化方式来表达JavaScript内的数据变量,于是就定义了JSON的语法,和JavaScript的其它语法定义混在一起,也没有人注意到它,以至于以前看了很多JavaScript的书籍都没有提到JSON。后来我听说JSON以后,以为也会为JavaScript提供一个函数库,谁知JavaScript天生就很“JSON”。 在网上,有很多在XML和JSON之间的比较,看一下这些比较的内容,有助于我们加深了解它们,并做出更正确的选择。 轻量级和重量级 比较之一是轻/重量级的比较。JSON是轻量级的数据交换格式,言下之意,XML算是重量级的数据格式。这一点确实不错,可是重量级体现在哪些方面呢?何为轻、何为重?什么又算是重量级的应用呢? 如果你只是要表达一个数据结构,把一组数据作为一个整体存放起来或用于传输,那么这就是一个轻量级的应用。无论你有多少数据,都只能算是轻量级的应用。你可以使用JSON,也可以使用XML。当数据量很大的时候,它们都一样的慢。别以为XML是重量级的就会比JSON快。 那么XML的重量机体现在哪儿呢?事实上体现在解析上。XML设计了两种解析方式:DOM和SAX。DOM把一个XML整体解析成一个DOM对象,这一点和JSON把JSON文字解析成JSON对象是一样的。SAX是一个类似消息驱动的解析方法,不需要把整个文档都解析完就可以对解析出的内容进行处理。每当解析出一个对象时,都会通知到程序的处理代码以处理这个对象。程序也可以随时中止解析。这样,一个大的文档就可以逐步地、一点一点地展现出来。如果在网络上传输数据流,那么在传输的过程中,已传输的部分就已经被处理了。这一点,JSON是做不到的,至少目前的JSON程序组件并没有支持这种解析方法。 所以,JSON和XML的轻/重量级的区别在于:JSON只提供了整体解析方案,而这种方法只在解析较少的数据时才能起到良好效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适用于对大量数据的处理。 而对于应用程序。只要整体数据可以一次性读取和写入的,都只能算是轻量级应用。所以还要依赖其它特征来选择JSON或XML。 易用性,或开发复杂性 有人很不喜欢DOM,认为用起来太麻烦,所以选择JSON。事实上使用不同的语言,不同支持库,代码的复杂性都不相同。而现在很多应用都是多语言的。比如基础服务器可能是用C++写的,可能有一个Java编写的WEB服务要和这个C++写的服务器交互,而WEB服务的客户端又要用JavaScript语言编写程序访问这个Java写的Web服务。 JSON为许多种语言都提供了解析库。访问http://www.json.org/可以下对这些语言JSON支持库。 XML的解析有点复杂。网上有一些开源的解析程序,但对于初学者,理解起来不是特别容易。Java语言的XML支持包还是很好用的,有点编程基础的人理解起来也不算太难。C/C++的XML解析也不算麻烦,可以使用tinyxml一类的库。笔者在Windows下开发程序时,习惯用MSXML库来解析、生成XML数据。当然,直接使用MSXML还是挺麻烦的,对其进行适当的包装可以事半功倍。 所以,易用性不在于JSON或XML本身,而在于你要使用的语言和你所拥有的基础。如果你熟悉XML,没必要羡慕JSON的使用者更简单;反之,如果你一直在使用JSON,也别以为XML的使用真有那么笨重;如果你很好学,建议你都学习一下。 笔者的选择 在使用C++写Windows应用时,笔者用XML来管理配置文件,因为我对MSXML进行了包装,用起来得心应手。 在写WEB应用时,服务端用Java,客户端使用JavaScript,这时我选择用JSON来传输数据,因为JavaScript天生就JSON,而Java的JSON库用起来也还算不错!(Java的JSON支持库除了Json.lib以外,还有一堆其它的库,都要下载才可以)
您还没有登录,请您登录后再发表评论
有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作。它就是JSON。各语言对JSON支持的特别好,自从Ajax的流行,JSON格式传输就更流行了。 一、JSON是什么? 有一种叫做JSON ...
- JQuery - jquery.json2xml.js - jquery.xml2json.js 2. XML 字符串转换成 JSON 对象 $.xml2json(str); 3. JSON 对象转换成 XML 字符串 $.json2xml(obj);
自己写的json与xml互转工具 简单实用
js下xml转json和json转xml
jquery.json2xml.js&&jquery.xml2json.js在jQuery的基础上实现json与xml的相互转换
Json和Xml离线格式化工具
json与xml互相转换工具类
XML to JSON and JSON to XML converter
用于在C++结构体和json/xml之间互相转换, bson在xbson中支持。 只需要头文件, 无需编译库文件。 具体可以参考example的例子
g关于Json介绍,用JSON替换XML
json2xml的代码。
JSON-XML相关jar包.rar
xml 与 json 格式的相互转换,采用javascript 实现。
json和xml比较,让你充分了解开发底层必备知识!
C# Json转Xml 或 Xml转Json 使用详细说明及资源 支持框架2.0以上 控件Newtonsoft.Json.dll内容详细包含源代码示例
json转xml所需jar包
java工程源码实现xml和json的互转,工程已包含所jar包:commons-beanutils-1.7.0.jar、commons-collections-3.1.jar、commons-lang-2.5.jar、commons-logging.jar、ezmorph-1.0.3.jar、json-lib-2.4-jdk15.jar、xom-...
delphi代码json和xml格式互转
NSDictionary,JSON和XML互相转换
xml字符串转换json格式 可用于微信小程序xml字符串转换json格式 安装 npm方式安装 npm install --save xmlstring2json bower方式安装 bower install xmlstring2json 用法示例: bookstore.xml文件 <title>...
相关推荐
有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作。它就是JSON。各语言对JSON支持的特别好,自从Ajax的流行,JSON格式传输就更流行了。 一、JSON是什么? 有一种叫做JSON ...
- JQuery - jquery.json2xml.js - jquery.xml2json.js 2. XML 字符串转换成 JSON 对象 $.xml2json(str); 3. JSON 对象转换成 XML 字符串 $.json2xml(obj);
自己写的json与xml互转工具 简单实用
js下xml转json和json转xml
jquery.json2xml.js&&jquery.xml2json.js在jQuery的基础上实现json与xml的相互转换
Json和Xml离线格式化工具
json与xml互相转换工具类
XML to JSON and JSON to XML converter
用于在C++结构体和json/xml之间互相转换, bson在xbson中支持。 只需要头文件, 无需编译库文件。 具体可以参考example的例子
g关于Json介绍,用JSON替换XML
json2xml的代码。
JSON-XML相关jar包.rar
xml 与 json 格式的相互转换,采用javascript 实现。
json和xml比较,让你充分了解开发底层必备知识!
C# Json转Xml 或 Xml转Json 使用详细说明及资源 支持框架2.0以上 控件Newtonsoft.Json.dll内容详细包含源代码示例
json转xml所需jar包
java工程源码实现xml和json的互转,工程已包含所jar包:commons-beanutils-1.7.0.jar、commons-collections-3.1.jar、commons-lang-2.5.jar、commons-logging.jar、ezmorph-1.0.3.jar、json-lib-2.4-jdk15.jar、xom-...
delphi代码json和xml格式互转
NSDictionary,JSON和XML互相转换
xml字符串转换json格式 可用于微信小程序xml字符串转换json格式 安装 npm方式安装 npm install --save xmlstring2json bower方式安装 bower install xmlstring2json 用法示例: bookstore.xml文件 <title>...