JSON与XML
2013-10-10 11:00
148 查看
目前,在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各有特色与适用特点:
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 |
可读性 | 标签格式 | 建议语法 |
编码难度 | 较复杂,适合于标记文档 | 较简单,适合于数据交换处理 |
解码难度 | 较复杂,适合重量级 | 较简单,适合轻量级 |
安全性 | 较好 | 较差 |
相关文章推荐
- ASP.NET+ExtJs4.0+Ajax+读取xml数据+读取json数据
- javabean、xml、json、map之间的相互转换
- win8 解析json数据模板 XMl解析数据
- json、xml、jsonp接口的生成与调用
- JSON-lib框架,转换JSON、XML不再困难
- xStream完美转换XML、JSON
- IOS开发之----NSDictionary,JSON和XML互相转换
- xml 和json 数据格式及解析
- Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用
- JSON与XML的区别比较
- JSON和XML比较
- XML和JSON 序列化以及DataTable转JSON
- 读写csv、xml、mat、json、exel
- 解析XML文件后生成JSON格式,供WEB前端调用
- Ajax:拥抱JSON,让XML走开《引用》
- xStream完美转换XML、JSON
- The content type application/json of the response message does not match the content type of the binding (application/soap+xml;
- JAVA XML转JSON简单实现(dom4j)
- Json和xml的区别!
- json与xml的相互转换