jquery JSON解析method_jquery

WBOY
WBOYオリジナル
2016-05-16 18:49:141021ブラウズ

ここで考慮されるのは、サーバーが JSON 形式で文字列を返すということです。JSONObject などのプラグインによってカプセル化された JSON オブジェクトについても同様であるため、ここでは説明しません。

ここではまず JSON 文字列セットを示します。文字列セットは次のとおりです。

コードをコピーします コードは次のとおりです:

var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101 ',value:'西安市'}、
{name:'6102',value:'通川市'}、
{name:'6103',value:'宝鶏市'}、
{名前:'6104'、値:'咸陽市'}、
{名前:'6105'、値:'渭南市'}、
{名前:'6106'、値:'延安市'}、
{名前:'6107'、値:'漢中市'}、
{名前:'6108'、値:'楡林市'}、
{名前:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}";

jqueryで非同期に取得するデータ型—— jsonオブジェクトと文字列をベースに、2つの方法で取得した結果処理方法を紹介します。

1. サーバーから返される JSON 文字列の場合、jquery 非同期リクエストがタイプを指定しない場合、または文字列の形式で受け入れる場合は、メソッドをオブジェクト化する必要はありません。面倒、つまり文字列を変換して eval() に入れて一度実行します。このメソッドは、通常の JavaScript メソッドで json オブジェクトを取得するのにも適しています。次の例で説明します。

var dataObj=eval("(" data ")");//json オブジェクトに変換
alert (dataObj.root.length);//ルートの子オブジェクトの数を出力
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}

//各ルート サブオブジェクトの名前と値を出力します
alert("name:" item.name ",value:" item.value); >})

注: 一般的な js で json オブジェクトを生成するには、$.each() メソッドを for ステートメントに置き換えるだけで済み、その他は変更されません。

2. サーバーから返される JSON 文字列の場合、jquery 非同期リクエストでタイプ (通常はこの構成属性) を「json」に設定するか、$.getJSON() メソッドを使用してサーバーからの戻り値を取得します。この時点で取得される結果は既に json オブジェクトであるため、必要なのはオブジェクトを直接呼び出すことだけです。ここでは、$.getJSON メソッドを例として使用します。データ処理メソッド:

$.getJSON ("http://gaoyusi.blog.163.com/",{param:"gaoyusi"},function(data){
//返されたデータここにはすでに json オブジェクトがあります
//その他以下 操作は最初のケースと同じです
$.each(data.root,function(idx,item){
if(idx==0) {
return true;//countinue と同じ、break と同じ false を返す
}

alert("name:" item.name ",value:" item.value); >
});
});

ここで特に注意が必要なのは、メソッド 1 の eval() メソッドが文字列 (おそらく js スクリプト) を動的に実行するため、システムに問題が発生しやすいということです。セキュリティの問題。したがって、eval() を回避するサードパーティのクライアント スクリプト ライブラリを使用できます。たとえば、
JavaScript の JSON
は 3K 以内のスクリプト ライブラリを提供します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。