web-dev-qa-db-ja.com

JSONキーと値を取得する方法は?

WebサービスからJSON結果を取得するために、次のコードを記述しました。

function SaveUploadedDataInDB(fileName) {
            $.ajax({
                type: "POST",
                url: "SaveData.asmx/SaveFileData",
                data: "{'FileName':'" + fileName + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    var result = jQuery.parseJSON(response.d);
                    //I would like to print KEY and VALUE here.. for example
                    console.log(key+ ':' + value)
                    //Addess : D-14 and so on..
                   }
            });
        }

これはwebserviceからの応答です: enter image description here

キーとその価値を印刷するのを手伝ってください

47
imdadhusen

配列を取得しているようです。常に1つの要素のみで構成される場合は、これを行うことができます(はい、それはTomalakの答えとほぼ同じです)。

$.each(result[0], function(key, value){
    console.log(key, value);
});

複数の要素があり、それらすべてを反復処理する場合は、$.each()をネストできます。

$.each(result, function(key, value){
    $.each(value, function(key, value){
        console.log(key, value);
    });
});
95
$.each(result, function(key, value) {
  console.log(key+ ':' + value);
});
11
Tomalak

まず、明示的な$.parseJSON()を使用していることがわかります。サーバー側でJSONを手動でシリアル化している場合は、そうしないでください。 ASP.NETはメソッドの戻り値を自動的にJSONシリアライズします そしてjQueryは自動的にメソッドのデシリアライズも行います。

配列内の最初のアイテムを繰り返し処理するには、次のようなコードを使用します。

var firstItem = response.d[0];

for(key in firstItem) {
  console.log(key + ':' + firstItem[key]);
}

複数のアイテムがある場合(そのスクリーンショットからわかりにくい)、response.dをループして、その外側のループ内でこのコードを使用できます。

10
Dave Ward