日期:2014-05-16 浏览次数:20379 次
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应用程序,越来越注意到了它的简单和便捷。