12

重複の可能性:
JSON オブジェクトをループする方法は?

JSON obj の属性をループする方法を見つけようとしています。キーを指定することで属性を取得できますが (以下を参照)、それらすべてをループするにはどうすればよいでしょうか?

var jsonStr = '{"Items":[{"Title": "Title 1", "Description":"Description 1"}]}';

var json_parsed = $.parseJSON(jsonStr);


// Cycle through all list items
$.each(json_parsed.Items, function(i, val) {
    var listItem = $(this);

    var title = listItem.attr('Title');
    var description = listItem.attr('Description');

    // Instead, loop through all attributes

}
4

3 に答える 3

24
for (var name in json_parsed) {
    console.log(name + "=" + json_parsed[name]);
}

対応するプロパティが問題のオブジェクトで定義されているかどうかを確認する必要がある場合、プロトタイプ チェーンの一部ではなく (これは問題のケースではばかげていますが、それでも有用です)、次のチェックを追加できます。

if (json_parsed.hasOwnProperty(name))
    console.log(name + "=" + json_parsed[name]);

編集

すべての配列オブジェクトの属性を実際に反復するには、次のスニペットを使用します。

var items = json_parsed.Items;
for (var i = 0; i < items.length; ++i) {
    console.log("Item #" + i);
    for (var name in items[i]) {
        console.log(name + "=" + items[i][name]);
    }
}
于 2012-09-27T13:40:34.197 に答える
2

JSON オブジェクトは単なる Javascript オブジェクトです。すでに jQuery を使用している場合は、再度 $.each() を使用して、名前付きプロパティを反復処理できます。

于 2012-09-27T13:41:14.027 に答える
1
var jsonStr = '{"Items":[{"Title": "Title 1", "Description":"Description 1"}]}';

var json_parsed = JSON.parse(jsonStr);

var items = json_parsed.Items; // an array

for (var i=0; i<items.length; i++) { // loop over it

     var listItem = items[i]; // an object

     for (var prop in listItem) { // enumerate its property names

         // prop is "Title", "Description" etc
         listItem[prop] // is the respective value

     }

}
于 2012-09-27T13:44:03.030 に答える