登录
注册
搜索
帮助
会员
界面
简洁版本
在线
MONO中文
MONO平台技术
软件开发
ASP.NET
JSON 还是 XML?
帖子标题
新闻动态
SNS动态
SNS项目
SAF.NET
SNS Toolkits
MONO平台技术
MONO资讯
部署与维护
软件开发
MONO核心讨论区
系统运维
Linux系统
Windows
综合交流区
布衣坊
软件下载
书籍与书评
1
/ 1 页
1
跳转
页
查看:
685
JSON 还是 XML?
enjoyo
admin
组别:
管理员
性别:
来自:
积分:
989
帖子:
455
注册:
2006-10-19
2008-05-15 18:15
|
只看楼主
树型
|
收藏
|
小
中
大
1
JSON 还是 XML?
数据要传输,就需要把数据表示出来。用什么格式来表示数据,这是个问题。
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
中就是类似与
<a>,<input>
之类的东西
)
;
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
以外,还有一堆其它的库,都要下载才可以)
作者:苏林
Sinoprise Network Studio
----专注.NET技术
发送短消息
查看公共资料
查找该会员全部帖子
UID:
1
精华:
74
威望:
164
金钱:
172.5 元
状态:
离线
shg@sinoprise.com
20153462
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
新闻动态
SNS动态
SNS项目
SAF.NET
SNS Toolkits
MONO平台技术
MONO资讯
部署与维护
软件开发
C#编程语言
MONO GUI
ASP.NET
Database Access(Ado.net)
WebService&Remoting
MONO核心讨论区
系统运维
Linux系统
Windows
综合交流区
布衣坊
软件下载
书籍与书评
我的主题
我的帖子
我的精华
帖子标题
空间日志
相册标题
作 者