JSON VS XML :JSON真的比XML好很多吗?

JSON是一个新的人类可读(  human readable)的数据格式,在过去几年中已变得非常受欢迎,尤其是在web开发中。
 
JSON和 XML非常的相似。它们都试图通过建立一种简单,人类可读的格式存储数据。直到最近,XML被用于任何类型的需要迅速发送一小部分数据的系统中。比如那些从服务器获取信息的API。在大多数情况下,XML做的很好。那么,为什么还需要JSON?
 
JSON在设计时是为Web考虑的,所以它在JavaScript中真的很好用。使用类似 eval()的方法(使用 jQuery会很大提升这个方法的表现),你可以很容易使用JSON中的信息填充一个Web页面。
 
JSON声称相对XML有许多好处,包括:
  • 容易阅读
  • 解析速度更快
  • 占用空间更少
尽管容易阅读是很难衡量的一点,但其它两点是很显然的。
 
很容易看出,存储相同的信息JSON确实需要更少的空间。快速浏览一下JSON的网站后,你会发现几个比较这两种格式的例子。从页面上可以很容易的看出:描述同样的信息JSON比XML少占用很多的空间。例如:第一个例子(词汇表结构)存储为XML需要502个字符,而存储为JSON只需345字符(大约少占30%的空间)。
 
对于“解析速度更快”这一点,有点难以测试。对此我写了一个快速测试来看看我能以多快的速度来把一个XML和JSON字符串转化为Java对象。
 
对于XML解析,我使用Java内置的  SAX解析器。SAX解析器允许遍历XML文件,并把XML值赋给对象中适当的字段。这种方法相对JSON解析是比较繁琐的,但不是没有道理。
 
JSON的解析,我使用了GSON库,只需用一行代码就可以很容易地在JSON和java对象之间转换,只需要一个这个类的定义就可以了(如Book类,字段名和JSON中的对应)。不过这使得这个类变量和JSON实例绑定到了一起。一旦类的实例名称或JSON字段名有了变化,将会出现问题。
 
首先,我用相同的数据创建了一个XML和JSON来表示它。下面的XML和JSON文件是使用  Programming Pearls中的信息创建的。
XML版本
?
1
2
3
4
5
6
7
8
9
10
11
12
< book >
      < type >textbook</ type >
      < pages >256</ pages >
      < title >Programming Pearls 2nd Edition</ title >
      < description >The first edition of Programming Pearls was one of the most influential books I read early in my career...</ description >
      < rating >4.5</ rating >
      < coverType >paperback</ coverType >
      < genre >Computer Science</ genre >
      < author >Jon Bentley</ author >
      < publisher >Addison-Wesley Professional</ publisher >
      < copyright >1999</ copyright >
</ book >

 

JSON版本
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "book" : {
      "type" : "textbook" ,
      "pages" : "256" ,
      "title" : "Programming Pearls 2nd Edition" ,
      "description" : "The first edition of Programming Pearls was one of the most influential books I read early in my career..." ,
      "rating" : "4.5" ,
      "coverType" : "paperback" ,
      "genre" : "Computer Science" ,
      "author" : "Jon Bentley" ,
      "publisher" : "Addison-Wesley Professional" ,
      "copyright" : "1999"
      }
  }
 结果
 
 使用上面的XML和JSON文件分别运行解析测试10,000,000次。结果并不令人惊讶,解析和转换JSON成一个Java对象的速度比XML快30%左右。
  • JSON平均运行时间:3.647208974029518E-5
  • XML平均运行时间:5.011537916910817E-5
我得到的结论是:
    相对XML,JSON的解析速度提高了30%,占用空间少30%。这些结果似乎和多数开发社区对两种格式的看法一样。换用JSON处理数据在性能上可以有不小的提升,而且还会减少空间的占用。
 
 
转自: https://www.oschina.net/question/100267_61459
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值