這篇文章給大家分享的是有關JavaScript如何解析JSON及XML的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
一、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
<%@ WebHandler Language="C#" Class="GetJson" %>
using System;
using System.Web;
public class GetJson : IHttpHandler {
public void ProcessRequest (HttpContext context) {
string str = "[{id:1, name:'n_1'}, {id:2, name:'n_2'}]";
context.Response.ContentType = "text/plain";
context.Response.Write(str);
}
public bool IsReusable {
get {
return false;
}
}
}
在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();" />
二、XML
JS對XML的解析是基于DOM的,對HTML的DOM熟悉的話,解析XML就沒什么困難了。
注意:在Firefox中,解析器不會忽略空格,所以元素間的空格,FF一樣會認為是一個節點。
不過在我們用程序拼接XML的時候,一般不會出現節點間有空格的情況。
在根目錄下添加一個新的一般處理程序(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();" />
感謝各位的閱讀!關于“JavaScript如何解析JSON及XML”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。