JSON 文字列を JS の JSON データ形式に解析するには、通常 2 つの方法があります。
1. 1 つは eval() 関数を使用する方法です。
2. Function オブジェクトを使用してリターン分析を実行します。
最初の解析方法: eval 関数を使用して解析し、jQuery の各メソッドを使用して走査
jQuery を使用して、jQuery 非同期リクエストの送信オブジェクトとして、jQuery リクエスト後に返される JSON データを解析します。ここで考慮されるのは、サーバーによって JSON 形式で返される文字列です。JSONObject などのプラグインによってカプセル化された JSON オブジェクトの場合、プロセスは同様であるため、ここでは説明しません。
ここではまず JSON 文字列セットを示します。文字列セットは次のとおりです。
var data = " {
root:
[
{名前: '1'、値: '0'},
{名前: '6101'、値: '北京'} ,
{名前: '6102', 値: '天津'},
{名前: '6103', 値: '上海'},
{名前: '6104', 値: ' 重慶市'},
{名前: '6105', 値: '渭南市'},
{名前: '6106', 値: '延安市'},
{名前: '6107' 、値: '漢中市'},
{名前: '6108'、値: '玉林市'},
{名前: '6109'、値: '安康市'},
{name : '6110', value: 'Shangluo City'}
]
}
";
ここでは、jQuery によって非同期的に取得されたデータ型、つまり json オブジェクトとそれぞれ2つの方法で得られた結果の処理方法を紹介します。
1. サーバーから返される JSON 文字列について、jQuery 非同期リクエストが型を指定しない場合、または文字列として受け入れる場合は、メソッドをオブジェクト化する必要はありません。つまり、put です。 eval() 内の文字列は 1 回実行されます。このメソッドは、通常の JavaScript メソッドで json オブジェクトを取得するのにも適しています。次の例に示します。
var dataObj = eval("(" data ")"); // json オブジェクトに変換します
なぜ "("(" data ") を追加する必要があるのですか)");" を評価しますか?
理由は、eval 自体の問題です。 jsonは「{}」で始まり最後が「{}」で終わるため、JSではステートメントブロックとして処理されるため、強制的に式に変換する必要があります。
かっこを追加する目的は、JavaScript コードの処理時に、かっこ内の式をステートメントとして実行するのではなく、eval 関数で強制的にオブジェクトに変換することです。たとえば、オブジェクト リテラル {} を考えます。外側の大括弧が追加されていない場合、eval はその中括弧を JavaScript コード ブロックの開始マークと終了マークとして認識し、{} は空のステートメントを実行するとみなします。したがって、次の 2 つの実行結果は異なります:
alert( eval("{}"); // return unknown
alert(eval("({})");// return object[Object]
この書き込みメソッドでは、JS で
例: (function(){})(); クロージャー操作などを行うとき
$.each(dataObj.root, fucntion(idx, item) {
if (idx == 0) {
return true;
}
//各ルートサブオブジェクトの名前と値を出力しますalert("name:" item.name ",value:" item.value);
})
2. サーバーから返される JSON 文字列の場合、jQuery 非同期リクエストがタイプ (通常はこの構成属性) を「json」に設定するか、$.getJSON() メソッドを使用してサーバーから返される値を取得する場合、 () メソッドは必要ありません。この時点で取得された結果はすでに json オブジェクトであるため、このオブジェクトを直接呼び出すだけで済みます。ここでは、データ処理方法を説明するために $.getJSON メソッドを例として使用します。 >