Json生成文本,json时代和XML的优缺点

一、首先介绍json格式和组成

JSON就是一串字符串 只不过元素会使用特定的符号标注。可以把它看作是数据的存储形式,可以往配置项方面去理解。

{} 双括号表示对象

[] 中括号表示数组

“” 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

所以 {“name”: “Michael”} 可以理解为是一个包含name为Michael的对象。

而[{“name”: “Michael”},{“name”: “Jerry”}]就表示包含两个对象的数组。

当然了,你也可以使用{“name”:[“Michael”,”Jerry”]}来简化上面一部,这是一个拥有一个name数组的对象。

二、JSON与XML的优缺点比较

今天做接口对接时,发现对方竟然是通过XML进行数据传输,当时冒出的第一个想法就是:WTF,这都什么年代了,还在用XML,是来搞笑的吧,JSON它不香吗?

想法归想法,但对接还是要完成的是吧?然后看了下开发文档时间(2013年),那还是可以理解的嘛!

之前对XML一知半解,现在要用到了,赶紧补充一下知识,总结一下XML和JSON的区别。

1.XML介绍

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准 

2.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成为理想的数据交换语言。

3.XML和JSON优缺点

(1).XML的优缺点

XML的优点:

  1. 格式统一,符合标准;
  2. 容易与其他系统进行远程交互,数据共享比较方便。

XML的缺点:

  1. XML文件庞大,文件格式复杂,传输占带宽;
  2. 服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
  3. 客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
  4. 服务器端和客户端解析XML花费较多的资源和时间。

(2).JSON的优缺点

JSON的优点:

  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格式,便于客户端的访问提取;
  5. 因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

JSON的缺点:

暂无

4.XML和JSON的优缺点对比

(1).可读性方面。

JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。

(2).可扩展性方面。

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

(3).编码难度方面。

XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

(4).解码难度方面。

XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

(5).流行度方面。

当前JSON在流行度方面已经远远超过XML。

(6).解析手段方面。

JSON和XML同样拥有丰富的解析手段。

(7).数据体积方面。

JSON相对于XML来讲,数据的体积小,传递的速度更快些。

(8).数据交互方面。

JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。

(9).数据描述方面。

JSON对数据的描述性比XML较差。

(10).传输速度方面。

JSON的速度要远远快于XML。

5.XML与JSON数据格式比较

(1).关于轻量级和重量级

轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?应该体现在解析上,XML目前设计了两种解析方式:DOM和 SAX。

<1>.DOM

DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;

<2>.SAX

SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。

所以,JSON和XML的轻/重量级的区别在于:
JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;
XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

(2).关于数据格式编码及解析难度

<1>.在编码方面。

虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

<2>.在解析方面。

在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaSc++ript 解析XML,都常常导致复杂的代码,极低的开发效率。
实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应用甚至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。

(3).实例比较

XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。

<1>.用XML表示中国部分省市数据如下:

 
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <country>
  3.   <name>中国</name>
  4.   <province>
  5.     <name>黑龙江</name>
  6.     <citys>
  7.       <city>哈尔滨</city>
  8.       <city>大庆</city>
  9.     </citys>    
  10.   </province>
  11.   <province>
  12.     <name>广东</name>
  13.     <citys>
  14.       <city>广州</city>
  15.       <city>深圳</city>
  16.       <city>珠海</city>
  17.     </citys>   
  18.   </province>
  19.   <province>
  20.     <name>台湾</name>
  21.     <citys>
  22.        <city>台北</city>
  23.        <city>高雄</city>
  24.     </citys> 
  25.   </province>
  26.   <province>
  27.     <name>新疆</name>
  28.     <citys>
  29.       <city>乌鲁木齐</city>
  30.     </citys>
  31.   </province>
  32. </country>

<2>.用JSON表示中国部分省市数据如下:

 
  1.  var country =
  2.         {
  3.             name: "中国",
  4.             provinces: [
  5.             { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
  6.             { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
  7.             { name: "台湾", citys: { city: ["台北", "高雄"]} },
  8.             { name: "新疆", citys: { city: ["乌鲁木齐"]} }
  9.             ]
  10.         }

编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。

编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值