JavaScript入门篇之新生代JSON遇XML

最后更新于:2022-04-01 20:12:57

  信息化到处被提及的特点,就是拥有大量的数据交互的格式。前阵子学习了XML的结构化数据,在学习javascript的时候又接触到了JSON,都作为数据的存储格式,二者之间有什么区别和联系呢,查了很多的资料,小编在这里就相当于写个总结了。   十年前,XML是主要的数据交换格式。它的出现,尤如一股清新的空气,以及令人惊喜的SGML(标准通用标记语言),是一个巨大的进步。它使人们能够做到以前想都不敢想的事情,本质上讲,XML就是一个文本文件,在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端解析XML,都常常导致复杂的代码,极低的开发效率,无疑让JSON占了上风,加上在javascript的领域中,利用toJSONString()就可以看到JSON的字符串结构。 ## 一、JSON是什么   JSON : JavaScript Object Notation 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。   关于XML的详细介绍(见博客:[B/S初探之XML学习小结](http://blog.csdn.net/zhou2s_101216/article/details/42215059))。 ## 二、JSON的优缺点  优点:   (1)数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;   (2)易于解析,客户端JavaScript可以简单的通过eval_r()进行JSON数据的读取;   (3)支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;   (4)在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;   (5)因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。   缺点:   (1)没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;   (2)JSON格式目前在Web Service中推广还属于初级阶段 ## 三、XML的优缺点  优点:   (1)格式统一,符合标准;   (2)容易与其他系统进行远程交互,数据传输比较方便。  缺点:   (1)XML文件庞大,文件格式复杂,传输占带宽;   (2)服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;   (3)客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;   (4)服务器端和客户端解析XML花费较多的资源和时间。 ## 四、二者比较  1、可读性   JSON和XML的可读性可谓不相上下,一边是简易的语法(JSON),一边是规范的标签形式(XML),很难分出胜负。  2、可扩展性   XML天生有很好的扩展性,JSON当然也有,没有什么是XML可以扩展而JSON却不能扩展的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。  3、编码难度   XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。  4、解码难度   XML的解析方式有两种:一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName("tagName"),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。凡是这样可扩展的结构数据解析起来一定都很困难。JSON也同样如此。  5、有效数据率   JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不像XML那样需要有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输压力。   以上都是我查到的,不怕脑洞不够大,一张导图总结以上的内容: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-19_57b6bd296ff4c.jpg) ## 五、举例   XML: ~~~    中国   黑龙江哈尔滨大庆 广东广州深圳珠海 台湾台北高雄 新疆乌鲁木齐 ~~~   JSON: ~~~ { "people": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },    { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},    { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }    ]} ~~~ ## 六、总结   个人认为JSON更好,因为它不像XML那么详尽,并且比起纯二进制更容易被人们理解。XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,为了实现友好的异步数据传输,JSON还是很有潜力的。
';