首頁  >  文章  >  web前端  >  jQuery解析Json實例詳解_jquery

jQuery解析Json實例詳解_jquery

PHP中文网
PHP中文网原創
2016-05-16 15:30:221040瀏覽

本文實例講述了jQuery解析Json的方法。分享給大家供大家參考,具體如下:

前言

在WEB資料傳輸過程中,json是以文本,即字串的輕量級形式傳遞的,而客戶端一般用JS操作的是接收到的JSON對象,所以,JSON對象和JSON字串之間的相互轉換、JSON資料的解析是關鍵。

先明確2個概念例如:

JSON字串:

複製程式碼 程式碼如下:

var str1 = '{ "name": "deyuyi", "sex": "man" }';

JSON物件:

複製程式碼 程式碼如下:

var str2 = { "name": "deluyi", "sex": "man" };

JSON物件是直接可以使用JQuery運算的格式,如C#中可以用物件(類別名稱)點出屬性(方法)一樣;

JSON字串只是一個字串,一個整體,不截取的話沒辦法取出其中儲存的數據,不能直接使用,除非你只想alert()他;

一、JSON字串轉換為JSON物件

要使用上面的str1,必須使用下面的方法先轉換成JSON物件:

A:eval函數

eval函數可以直接將本質符合或近似符合JSON格式的字串轉換為JSON對象,使用方式如:

eval('(' str ')'); //其中str就是滿足本標題所描述的字串


//由JSON字符串转换为JSON对象
var str='{ "name": "John" }';
var obj = eval('(' + str + ')'); 
alert( obj.name);
var str2="{ 'name': 'John' }";
var obj2 = eval('(' + str2 + ')'); 
alert( obj2.name);
var str3="{ name: 'John' }";
var obj3 = eval('(' + str3 + ')'); 
alert( obj3.name);

以上皆會輸出結果「john」。

Eval方式可以轉換以下標準和非標準格式字串:


var str="{ 'name': 'John' }";
var str2='{ "name": "John" }';
var str3="{ name: 'John' }";

請參考本例下載套件中:JqueryDemo1.html

B:parseJSON函數

另一種將標準字串轉換為JSON物件的函數是parseJSON(),使用方式如jQuery .parseJSON(str)//其中str就是滿足本標題所描述的字串


//由JSON字符串转换为JSON对象
var str='{ "name": "John" }';
var obj = jQuery.parseJSON(str)
alert("1"+ obj.name);

以上皆會輸出結果「 john」。

此種方式僅支援標準格式:var str='{ "name": "John" }';

請參閱本例下載包中:JqueryDemo2.html

C:JSON.parse函數

還有一個將標準字串轉換為JSON物件的函數是JSON.parse(),使用方式如JSON.parse(str)//其中str是滿足本標題所描述的字串


var str = '{ "name": "mady", "age": "24" }';
var obj = JSON.parse(str);
alert(obj.name);

以上皆會輸出結果「john」。

此種方式僅支援標準格式:var str='{ "name": "John" }';

請參閱本例下載包中:JqueryDemo3.html

以上結果一致,均輸出姓名,如下圖:

 

特別注意

:如果obj本來就是一個JSON對象,那麼使用eval()函數轉換後(即使是多次轉換)還是JSON對象,但是使用parseJSON()函數處理後會有問題(拋出語法異常)。

D:Other方式

如果忍不住想犯錯,十分十分想解析非標準、非正規字串,如:


複製程式碼

程式碼如下:

{name:mady,age:23}


複製碼🎜> 程式碼如下:以及其他的你能想到的各種本質正確的非法格式,那麼有擴充庫可以解決

{name:'mady',age:23}

jquery-json擴充庫

下載位址在這裡:http://code.google.com/p/jquery-json/

這個函式庫用來擴充jQuery ,對於JSON 的使用,擴展了兩個函數:toJSON和parseJSONtoJSON 函數用來將一個普通的JavaScript 物件序列化為JSON 物件。

parseJSON函數用來將一個普通的 JavaScript 物件序列化為 JSON 物件too。



var data=$.toJSON({ x: 2, y: 3 }); 
var obj = jQuery.parseJSON(data); 
alert(obj.x); 
var str = {plugin: 'jquery-json', version: 2.3}; 
var data2=$.toJSON(str); 
var obj2 = jQuery.parseJSON(data2); 
alert(obj2.plugin);
以上代碼執行結果如:


 

請參閱本例下載套件中:JqueryDemo5.html

二、將JSON物件轉換為字串

可以使用toJSONString()或全域方法JS​​ON.stringify( )將JSON物件轉換為JSON字串。 例如:



複製代碼

代碼如下:或者

var last=obj.toJSONString(); //将JSON对象转化为JSON字符



三、解析读取JSON

我们通过各种方式将字符串转换为JSON对象后就是解析他了。
如上面的例子:

复制代码 代码如下:

var str2 = { "name": "mady", "sex": "man" };

就可以这样读取:

复制代码 代码如下:

alert(str2.name);//和C#一样直接往出点…

弹出” mady”。
我们遇到的JSON很少有这么简单的,比如复杂一点的JSON对象如:

复制代码 代码如下:

var str={"GetUserPostByIdResult":{"Age":"33","ID":"2server","Name":"mady"}};

解析用:

      alert(str.GetUserPostByIdResult.Name);//一次点不出来,我多点几次

再再复杂一点的如:

复制代码 代码如下:

var data=" { root: [ {'name':'6200','value':'0'}, {'name':'6101','value':'xa'}, 
{'name':'6102','value':'beijing'}, {'name':'6103','value':'haerbin'}]}";


如果你想单挑的话,解析用:

复制代码 代码如下:

alert(dataObj.root[0].name);

弹出:“6200”。

如果你想群挑的话,解析用:


$.each(dataObj.root, function(index, item) {
  $("#info").append(
      "" +index+":"+ item.name + "" + 
      "" +index+":"+ item.value + "");
});


其中这个“#info”是个DIV的ID。输入结果如下图:

 

参见本例下载包中:JqueryDemo4.html

注意:本例如果要使用其他转换函数请更改字符串内单引号为双引号,外引号为单引号。
本文完整实例代码代码点击此处本站下载

以上就是jQuery解析Json实例详解_jquery的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn