JSON与XML
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信大家都很熟悉。XML不仅能处理数字和文字等经典的数据,还可以管理文件,格式化,图像,音频,视频,以及更多。 JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。如今,我们经常会面临创建数据文件时,JSON和XML之间的选择。这里有一些差异,帮助在合适的时候选择合适的格式:
1.简单性,开放性,互操作性
JSON和XML之间的简单,开放性和互操作性方面没有太大的区别。
2.易读性
XML和JSON文件被认为是人可读。至少,他们是程序员可以理解的格式。然而,JSON文件更为严格,因此稍微更具可读性。这是因为JSON支持的数据格式的数量远小于XML。
3.编码及解析难度
在编码上,虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。
主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。
4.轻量级和重量级
轻量级和重量级是相对来说的,XML目前设计了两种解析方式:DOM和SAX。
DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;
SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。
所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。
综上,JSON与XML各有特色与适用特点:
对比项目 |
XML |
JSON |
可读性 |
标签格式 |
建议语法 |
编码难度 |
较复杂,适合于标记文档 |
较简单,适合于数据交换处理 |
解码难度 |
较复杂,适合重量级 |
较简单,适合轻量级 |
安全性 |
较好 |
较差 |