转自
http://www.cnblogs.com/lucas/archive/2009/04/13/1434566.html
书写AJAX的时候,经常需要解析从服务器返回的一串字符串,这里简单介绍服务器返回字符的两种格式,及JS对它们的解析方法。
一、JSON
即JS对象标记(JavaScript Object Notation),是一种以JS声明对象的方式组合的一串字符串。
JS可以按以下方式定义对象:
var obj =
{
id: 2,
name: 'n'
};
这样就定义了对象 obj, 它有两个公共属性id和name,可以用 obj.id 的方式直接访问其属性值。
从服务器获取数据时往往不止一个对象,这就需要用到对象数组,JS中对象数组可以用 [] 来定义,如下:
var objs = [{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}];
alert(objs[0].id);
这样就定义了对象数组 objs, 它包含两个对象,可以用索引来访问,如 objs[0] 将引用到第一个对象。
到这里你或许已经想到服务器返回的字符串格式是怎样的,但字符串毕竟是字符串,我们需要将其转换为可以利用JS操作的变量。
这就用到 eval 函数,请看下例:
var objs = eval("[{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}]");
alert(objs[0].id); // return 1
好了,服务器端你只要以格式:[{ id: 1, name: 'n_1' }, { id: 2, name: 'n_2'}] 返回字符串,
在客户端就可以利用 eval() 执行返回的字符串,获得对象数组。
以下用AJAX做一个简单的例子。新建一个网站,在根目录下添加一个一般处理程序(GetJson.ashx),代码如下:
GetJson.ashx
在Default.aspx 文件中添加测试脚本:
<script type="text/javascript">
function getJson() {
// 在IE7下测试通过,IE6下必须创建 new ActiveXObject("MSXML2.XMLHTTP.6.0")
var request = new XMLHttpRequest();
request.open('GET', 'GetJson.ashx');
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var objs = eval(request.responseText);
alert(objs.length); // 2
alert(objs[0].id); // 1
alert(objs[1].name);// 'n_2'
}
}
request.send(null);
}
</script>
再添加一个测试按钮即可以看到效果:
<input type="button" value="GetJson" onclick="getJson();" />
注:如何用jquery来解析返回的json数据格式
<script type="text/javascript">
function getJSON()
{
$.ajax({
type:"get",
url:"TestJSON",
dataType:"json",
success:function(data){
$.each(data,function(i,item){
alert(item[i].id+item[i].name);//id和name为对象的属性名称
})
},
error:function(data){
//
}
}
)
}
</script>
注:打印json对象的方法 Object.toJSON('这里是一个json对象');
二、XML
JS对XML的解析是基于DOM的,对HTML的DOM熟悉的话,解析XML就没什么困难了。
注意:在Firefox中,解析器不会忽略空格,所以元素间的空格,FF一样会认为是一个节点。
不过在我们用程序拼接XML的时候,一般不会出现节点间有空格的情况。
在根目录下添加一个新的一般处理程序(GetXml.ashx),代码如下:
GetXml.ashx
在Default.aspx页面添加以下脚本:
function getXml() {
// 在IE7下测试通过,IE6下必须创建 new ActiveXObject("MSXML2.XMLHTTP.6.0")
var request = new XMLHttpRequest();
request.open('GET', 'GetXml.ashx');
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var xmlDoc = request.responseXML;
var root = xmlDoc.documentElement;
var elements = root.getElementsByTagName("Person");
alert(elements.length); // 2
// elements[0].firstChild 引用到第一个Person节点的Id节点
// elements[0].firstChild.firstChild 引用到Id节点的文本节点
// 因为文本节点是元素节点的第一个子节点
alert(elements[0].firstChild.firstChild.nodeValue); // 1
alert(elements[1].lastChild.firstChild.nodeValue); // 'n_2'
}
}
request.send(null);
}
注意到代码段:var root = xmlDoc.documentElement;
主要是为了消除IE6和其他浏览器的兼容问题,在其他浏览器下,允许request.responseXML.getElementsByTagName("Person");
添加测试按钮:
<input type="button" value="GetXml" onclick="getXml();" />
总结:从代码上很容易看出,解析JSON相对直观,在网络中需要传输的字符串也比较少,解析过程中也不需要考虑浏览器兼容问题。
但JSON比较适合轻量级的数据交互,XML则比JSON多了一些特性,比如命名空间,还有更多的节点类型。
分享到:
相关推荐
这两个脚本都简化了在JavaScript中处理JSON和XML的流程,使得开发人员能够在不同的数据格式之间灵活切换,而无需手动进行复杂的解析和序列化工作。 **使用场景** 1. **数据交换**:当客户端和服务器之间的接口需要...
在JavaScript(JS)环境中,XML(Extensible Markup ...总之,XML和JSON之间的转换在JavaScript环境下是常见的需求,了解其基本原理和方法对于Web开发至关重要。同时,掌握和利用现有的转换库能进一步提升开发效率。
在VB.NET中,可以使用内置的System.Web.Script.Serialization命名空间中的JavaScriptSerializer类来解析Json。以下是一个简单的步骤: 1. 引入命名空间: ```vb Imports System.Web.Script.Serialization ``` 2...
在实际开发中,有许多现成的库和工具可以帮助进行JSON和XML的互转,如JavaScript中的`xml2js`库和`json-stringify-safe`库,Python中的`xmltodict`和`json`模块等。压缩包中的`xmlTojson`可能是一个简单的实现,用于...
JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛用于数据交换的格式,尤其在Web服务和应用程序之间。它们都提供了结构化的数据表示方式,但各有特点和适用场景。 **JSON** 1. **...
根据提供的信息,我们可以深入探讨如何在Kettle中解析JSON串,并连接数据库进行数据处理。本文将详细介绍使用Java库解析JSON的基本方法以及如何在Kettle环境中实现这一过程。 ### Kettle与JSON解析概述 #### 1. **...
JSON 和 XML 比较 JSON 和 XML 是两种常用的数据交换格式,它们之间有很多相似之处,也有许多不同之处。下面我们将从多方面对比 JSON 和 XML。 可读性和可扩展性 JSON 和 XML 都是文本表示的数据格式,可以跨平台...
本文将详细讲解如何使用jQuery解析JSON和XML数据,通过给出的文件名称,我们可以推测这是一个关于Web应用中添加账户和应用的场景。 首先,让我们来看看JSON(JavaScript Object Notation)和XML(eXtensible Markup...
JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛用于数据交换的格式,尤其在Web服务和应用程序之间。它们都提供了结构化的数据表示方式,但各有其特点和适用场景。 JSON是一种轻...
在IT行业中,数据交换和存储经常涉及两种常见的数据序列化格式:JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)。JSON以其简洁、易读性而被广泛用于Web服务,而XML则因其丰富的结构和强大...
本文将深入探讨Delphi中用于解析JSON和XML的类,以及如何使用它们。 首先,我们来看JSON(JavaScript Object Notation)解析。JSON是一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和生成,...
JSON则可以通过`JSON.parse()`解析JSON字符串为JavaScript对象,而`JSON.stringify()`可将JavaScript对象转换为JSON字符串。 XML转JSON的步骤如下: 1. 解析XML:使用`DOMParser`将XML字符串解析为DOM对象。 2. ...
开发者可以输入JSON字符串,该程序会解析JSON并生成对应的XML字符串;同样,也可以输入XML字符串,程序将其解析并转化为等效的JSON格式。这种转换对于那些需要在使用JSON的应用和使用XML的应用之间传递数据的开发者...
解析JSON和XML的方式有很多种,下面分别介绍: 1. JSON解析: - JavaScript中,由于JSON源自JavaScript,因此可以使用`JSON.parse()`方法直接将JSON字符串转换为JavaScript对象。 - 在Python中,可以使用`json`...
1. **解析JSON** - `org.json`库:Android SDK内置了`org.json`库,提供了`JSONObject`和`JSONArray`类来处理JSON。例如,可以使用`JSONObject.getString()`、`JSONObject.getInt()`等方法获取JSON对象的值。 - `...
在现代软件开发中,数据交换通常涉及JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)这两种格式,它们是网络传输数据的标准格式。JSON因其简洁和易读性而广泛应用于API接口,而XML则在更...
这个标签表明,可能包含的压缩包文件`Json2Xml`中包含了完成这一转换的具体实现,包括源代码文件,可能有类、方法和其他辅助功能,用于解析JSON并生成XML。 总结来说,C#中JSON到XML的转换涉及到解析JSON字符串,...
1. 解析JSON:将JSON字符串解析为数据结构,如Python中的字典或列表。 2. 构建XML树:根据JSON数据结构创建相应的XML元素树。每个JSON对象转换为XML元素,每个键成为元素的属性或子元素,每个值成为元素的文本或子...
总的来说,这个“json解析xml的jar包”是一个便捷的工具,可以帮助Java开发者快速处理XML和JSON之间的转换,提高开发效率,同时保证了转换的正确性和项目的稳定性。在选择和使用这样的库时,应考虑其性能、兼容性、...
这个过程涉及解析JSON对象,创建XML元素和属性。JavaScript中,可以使用`json2xml`或`xmlbuilder`等库来完成这个任务。例如,`xmlbuilder`可以创建一个新的XML文档,然后通过添加节点和属性来构建XML结构。 在实际...