JSON与XML优缺点对比分析
1. 定义介绍
1.1 XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
1.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 的一个子集。
2. XML和JSON优缺点
2.1 XML的优缺点
XML的优点 A.格式统一,符合标准; B.容易与其他系统进行远程交互,数据共享比较方便。
XML的缺点 A.XML文件庞大,文件格式复杂,传输占带宽; B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护; C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码; D.服务器端和客户端解析XML花费较多的资源和时间。
2.2 JSON的优缺点
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格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性; B.JSON格式目前在Web Service中推广还属于初级阶段。
总结:
1.占带宽小(格式是压缩的)
2. js通过eval()进行Json读取(便于客户端读取)
3. JSON支持多种语言(c、c++、php等),便于服务端解析
JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.
优点:1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小
2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取
3. 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取. 另外PHP的PEAR类已经提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)
5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护
缺点:
1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性2. JSON格式目前在Web Service中推广还属于初级阶段PS: 据说Google的Ajax是使用 JSON+模板 做的啊
3. XML和JSON的优缺点对比
可读性方面。
JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。
可扩展性方面。
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。
编码难度方面。
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。
解码难度方面。
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。
流行度方面。
XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。
解析手段方面。
JSON和XML同样拥有丰富的解析手段。
数据体积方面。
JSON相对于XML来讲,数据的体积小,传递的速度更快些。
数据交互方面。
JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。
数据描述方面。
JSON对数据的描述性比XML较差。
传输速度方面。
JSON的速度要远远快于XML。
4.XML与JSON数据格式比较
4.1 关于轻量级和重量级
轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?应该体现在解析上,XML目前设计了两种解析方式:DOM和 SAX。
DOM
DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;
SAX
SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。 所以,JSON和XML的轻/重量级的区别在于: JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果; XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。
4.2 关于数据格式编码及解析难度
在编码方面。
虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有
可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
在解析方面。
在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。 实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应用甚至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应用中,至少就目前来说XML仍有不可动摇的地位。
实例比较
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。 用XML表示中国部分省市数据如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<? 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表示中国部分省市数据如下:
1
2
3
4
5
6
7
8
9
10
|
var country =
{
name: "中国" ,
provinces: [
{ name: "黑龙江" , citys: { city: [ "哈尔滨" , "大庆" ]} },
{ name: "广东" , citys: { city: [ "广州" , "深圳" , "珠海" ]} },
{ name: "台湾" , citys: { city: [ "台北" , "高雄" ]} },
{ name: "新疆" , citys: { city: [ "乌鲁木齐" ]} }
]
}
|
编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。
编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。
转载于:https://www.cnblogs.com/nxxshxf/p/5226792.html
JSON与XML优缺点对比分析相关推荐
- JSON和XML优缺点比较
JSON和XML优缺点比较 JSON定义 一种轻量级的数据交换格式,具有良好的阅读和便于快速编写的特性,能在不同平台之间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似C语言体系的行为. ...
- 序列化:Protobuf 与 JSON、XML 的对比
Protobuf .JSON.XML 的对比 XML JSON PB 数据结构支持 复杂结构 简单结构 较复杂结构 数据保存方式 文本 文本 二进制 数据保存大小 大 一般 小 解析效率 慢 一般 快 ...
- u2 接口 服务器硬盘,U2和M2硬盘接口区别介绍 固态硬盘接口优缺点对比分析
U2和M2硬盘接口区别介绍,固态硬盘接口优缺点对比分析,大家都知道固态硬盘SATA3.0接口是目前主流,但是M.2和U.2两种接口.那么U.2和M.2接口发展很快.下面小编为大家介绍下M.2和U.2接 ...
- u2硬盘测试软件,U2和M2硬盘接口区别介绍 固态硬盘接口优缺点对比分析
U2和M2硬盘接口区别介绍,固态硬盘接口优缺点对比分析,大家都知道固态硬盘SATA3.0接口是目前主流,但是M.2和U.2两种接口.那么U.2和M.2接口发展很快.下面小编为大家介绍下M.2和U.2接 ...
- 亚马逊无货源模式做跨境电商,优缺点对比分析!
亚马逊无货源模式做跨境电商,优缺点对比分析! 由于互联网的发展.传统外贸的利润逐渐降低和国家政策的支持,跨境电商这些年迅速发展.传统的电商都是有自己的货源等优势,但同时成本还是相对较高,竞争激烈. 逐 ...
- php使用框架优缺点,主流PHP框架的优缺点对比分析
PHP是一种在国内外都比较流行的开源服务器端脚本开发语言.能够适应大中小型项目的开发需求.我们将在这篇文章中向大家介绍几款主流PHP框架及其相关优缺点评比,作为一个参考分享给朋友们. 主要参考的PHP ...
- 四种分布式数据库场景选型、优缺点对比分析和未来展望 | 趋势解读
[摘要]随着互联网金融场景的不断拓展,海量的数据访问和处理造成传统的集中式数据库开始表现出性能瓶颈,分布式数据库的研究和场景使用应运而生,而数据的安全和合规也随着企业对数据使用的要求越来越高更加重视. ...
- Redis学习总结(16)——Redis 集群的5种使用方式,及各自优缺点对比分析
一.常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 二.各种使用 ...
- 各大媒体优劣对比_户外广告媒体类型与优缺点对比分析
凡是能在露天或公共场合通过广告表现形式同时向无以计量的消费者进行广告传播的,都可以定义为户外广告,户外广告是一种媒体类型丰富.表现形式多样.发展速度较快的广告模式,那么户外广告具体有哪些类型呢?户外广 ...
最新文章
- 探臻实录 | 戴琼海:搭建脑科学与人工智能的桥梁
- (三)Sass和Compass--制作精灵图片
- pwn学习总结(五) —— 堆溢出经典题型整理
- 从物联网发展历程看区块链挑战
- 【LeetCode笔记】143. 重排链表(Java、链表、栈、快慢指针)
- 学python编脚本_python 学习写脚本
- 【饭谈】为什么有的技术博文你看不懂?
- 详解VB对话框InputBox和MsgBox
- 对训练样本分布不均的思考
- opencv中图像失焦检测
- 手机软件测试自学乐器,自学乐器不难!——从用好这6款APP开始吧
- steam同乐无法连接远程计算机,Steam远程同乐功能怎么用 Steam远程同乐功能使用教程...
- SQL Server 损坏修复
- FreeSWITCH 视频直播
- ASP.NET MVC 音乐商店 - 2.控制器
- CSS 水平居中、垂直居中、水平垂直居中
- CentOS----本地YUM源配置
- 抖音怎么上热门 怎样修改视频的md5
- python数据结构,快慢指针
- win10的wsapp把电脑卡死
热门文章
- 1.MAC中MySql的环境配置
- 临时笔记, 有意思的东西
- ubuntu12.04循环登录,无法进桌面的问题。
- 关于新版VLC无法看RTSP的视频的问题-转
- 蓝桥杯 ADV-189 算法提高 连接乘积
- 台式电脑接路由器步骤_台式电脑怎么连接无线路由器
- 伪指令相当于c语言的什么,ARM汇编中关于“.word”伪指令的概念(转)
- 旧版java_Java旧版本清理|JavaRa旧版本清理下载_V2.4 官方版_9号软件下载
- PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.11. 只用索引的扫描
- linux编程之指针