ホームページ  >  記事  >  ウェブフロントエンド  >  jqueyvalでJSONを解析する際の注意点の紹介

jqueyvalでJSONを解析する際の注意点の紹介

黄舟
黄舟オリジナル
2016-12-16 10:45:331244ブラウズ

JSON 文字列を JS の JSON データ形式に解析するには、通常 2 つの方法があります:

1。1 つは eval() 関数を使用する方法です。

2. Function オブジェクトを使用してリターン分析を実行します。

eval関数を使用して解析し、jqueryの各メソッドを使用してトラバースします

jqueryを使用してJSONデータを解析します。jquery非同期リクエストの送信オブジェクトとして、jqueryリクエスト後に返される結果はjsonオブジェクトであり、サーバーはここで考慮されますJSON 形式で文字列を返す形式は、JSONObject などのプラグインによってカプセル化された JSON オブジェクトと同様であるため、ここでは説明しません。
最初に JSON 文字列セットを示します。文字列セットは次のとおりです。

var data=" {
root:
[
{name:'1',value:'0'},
{name:'6101 '、値:'北京'}、
{名前:'6102'、値:'天津'}、
{名前:'6103'、値:'上海'}、
{名前:'6104'、値: '重慶市'}、
{名前:'6105',値:'渭南市'}、
{名前:'6106',値:'延安市'}、
{名前:'6107',値:'漢中市'}、
{名前:'6108'、値:'楡林市'}、
{名前:'6109'、値:'安康市'}、
{名前:'6110'、値:'商洛市' }
]
}";

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

1. サーバーから返される JSON 文字列について、jquery 非同期リクエストに型の説明がない場合、または文字列として受け入れられる場合は、メソッドをオブジェクト化する必要があります。つまり、put です。 eval( ) の文字列。このメソッドは、通常の JavaScript メソッドで json オブジェクトを取得するのにも適しています。以下に例を示します。

var dataObj=eval("("+data+")");//json オブジェクトに変換する
なぜ必要なのでしょうか。ここで eval に "(" を追加しますか? ("+data+")");//"?

理由は: eval 自体の問題です。 jsonは「{}」で始まり最後が「{}」で終わるため、JSではステートメントブロックとして処理されるため、強制的に式に変換する必要があります。

かっこを追加する目的は、Javascript コードを処理するときに、かっこ内の式 (exPRession) をステートメントとして実行するのではなく、eval 関数に強制的にオブジェクトに変換させることです。たとえば、オブジェクト リテラル {} を考えます。外側の大括弧が追加されていない場合、eval はその中括弧を JavaScript コード ブロックの開始マークと終了マークとして認識し、{} は空のステートメントを実行するとみなします。そのため、次の 2 つの実行結果は異なります:

alert(eval("{}"); // return unfineed warning(eval("({})");// return object[Object]

これについては(function()) {}(); などのメソッドの記述は JS のどこにでもあります。

alert(dataObj.root.length);// ルートの子の数を出力します。 object $.each(dataObj.root,fucntion(idx,item){

if(idx==0){

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


注: 一般的な js で json オブジェクトを生成するには、$.each() メソッドを for ステートメントに置き換えるだけで済み、何も必要ありません。 else 変更します。

2. jquery 非同期リクエストがタイプ (通常はこの構成属性) を「json」に設定するか、$.getJSON() メソッドを使用してサーバーから返される文字列を取得する場合、この時点で取得される結果はすでに json オブジェクトであるため、 eval() メソッドを実行する必要はありません。ここでは、データ処理を説明するために $.getJSON メソッドを例として使用します。 Method:

$.getJSON("http:// www.phpzixue.cn/",{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 未満のスクリプト ライブラリを提供します。 2 番目の解析方法は、Function オブジェクトを使用することです。典型的なアプリケーションは、JQUERY

var json='{"name":"CJ","age":18} の Ajax メソッドでの成功など、返されたデータの分析です。 ';

data =(new Function(" ","re​​turn "+json))();



この時のデータはjsonオブジェクトに解析されます

以上が内容です。 jqueyval の JSON 解析の注意点については、PHP 中国語 Web サイト (www.php.cn) を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。