jqueryにおけるJSONの解析方式

2174 ワード

いずれもサーバがJSON形式の文字列を返す形式を考慮し,JSOnObjectなどのプラグインでカプセル化されたJSONオブジェクトについては,これと大同小異であり,ここでは説明しない.
 
  
var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:' '},
{name:'6102',value:' '},
{name:'6103',value:' '},
{name:'6104',value:' '},
{name:'6105',value:' '},
{name:'6106',value:' '},
{name:'6107',value:' '},
{name:'6108',value:' '},
{name:'6109',value:' '},
{name:'6110',value:' '}
]
}";

ここでは,jqueryが非同期で取得したデータ型であるjsonオブジェクトと文字列に基づいて,それぞれ2つの方式で取得した結果処理方式を紹介する.
1.サーバから返されるJSON文字列について、jquery非同期要求がタイプの説明をしていないか、文字列で受け入れられている場合は、オブジェクト化処理を行う必要があります.あまり面倒ではありません.eval()にその文字列を置いて実行します.この方法は、通常のjavascipt方式でjsonオブジェクトを取得するのにも適しています.以下に例を示します.
 
  
var dataObj=eval("("+data+")");// json
alert(dataObj.root.length);// root
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}
// root
alert("name:"+item.name+",value:"+item.value);
})

注意:一般的なjsに対してjsonオブジェクトを生成するには、$のみが必要です.each()メソッドはfor文に置き換えればよいが,その他は変わらない.
2.サーバが返すJSON文字列について、jquery非同期要求がtype(一般的にこの構成属性)を「json」にするか、$を利用する.getJSON()メソッド取得サーバが戻ると、eval()メソッドは不要になります.このとき得られる結果はすでにjsonオブジェクトであるため、そのオブジェクトを直接呼び出すだけでよいので、ここでは$.getJSONメソッドを例にデータ処理方法を説明する.
 
  
$.getJSON(" http://user.qzone.qq.com/2227211070",{param:"gaoyusi"},function(data){
// data json
//
$.each(data.root,function(idx,item){
if(idx==0){
return true;// countinue, false break
}
alert("name:"+item.name+",value:"+item.value);
});
});

以上、jQuery解析jsonに関する本文のすべてですが、お気に召していただきたいと思います.