`
lynneahui
  • 浏览: 32122 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Json数据格式和XML格式的比较

阅读更多

JSON和XML都使用结构化方法描述数据,包含相同信息时Json是更轻量级的。

JSON有结构化的嵌套数据元素,这一点和XML相似。JSON也是基于文本的,XML也是如此。两者都使用Unicode。 JSON和XML都很容易阅读。主观上,JSON更清晰,冗余更少。JSON WEB站点严格地描述了JSON语法,目前就是这样的。它确实是一个简单的小语言! XML确实适合标记文档,但是JSON是数据交互的理想格式。每个JSON文档描述了一个这样一个对象,该对象包含有:嵌套对象、数组、字符串、数字、布 尔值或空值。

Json是更轻量级的,与XML相比,Json的实际好处来自于解析过程。

比如处理XML版本的数据,处理的函数如下:

function myHandler() {
   if (req.readyState == 4 /*complete*/) {
       // Update address field in a form with first street address
       var addrField   = document.getElementById('addr');
       var root        = req.responseXML;
       var addrsElem   = root.getElementsByTagName('addresses')[0];
       var firstAddr   = addrsElem.getElementsByTagName('address')[0];
       var addrText    = fistAddr.firstChild;
       var addrValue   = addrText.nodeValue;
       addrField.value = addrValue;
   }
}

值得注意的是你不必解析XML文档:XMLHttpRequest对象自动解析了,并使responseXML 中的DOM可用,通过使用responseXML 属性,可以调用getElementByTagName方法查找文档的地址部分,下面使用JSon:

function myHandler() {
   if (req.readyState == 4 /*complete*/) {
       var addrField = document.getElementById('addr');
       var card = eval('(' + req.responseText + ')');
       addrField.value = card.addresses[0].value;
   }
}

由于Json是JavaScript的一个子集,可以使用JavaScript的编译器来解析,通过调用eval函数,此外,操纵Json中的对象就象操纵其他JavaScript对象一样,这显然要比通过DOM 树来操纵简单,Json文件总是一个以一个带有单一命名属性的对象开始,该属性标识了对象的种类。

 

Json提供轻量的小文档,而且Json在JavaScript中更容易使用,在JavaScript中,解析Json比XML要快很多,当把AJax当作桌面应用看待时,速度是很重要的因素,很明显,JSon更优秀。

如果不能控制服务器来为AJax程序产生数据(本项目服务器端和客户端都可以控制)。

代码中值得注意的是,将响应文本直接传入到eval中,如果控制着服务器,就可以这么做,如果不是,一个恶意的服务器可以使你的浏览器执行危险操作,这样的情况下,最好使用写在JavaScript中的代码来解析JSon。

在服务器端输出JSon格式的数据也是非常简单的,一些WEB应用程序框架,例如TurboGears,自动包括对JSON输出的支 持。

 

总结:

Json是javaScript和python的自己,使得它更易用,为Ajax提供高效的数据交互,它解析更快,比XML更容易使用,每个开发者,无论是标准桌面程序或web应用程序,越来越注意到了它的简单和便捷。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics