我正试图找出如何遍历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
}
答案 0 :(得分:19)
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]);
}
}
答案 1 :(得分:2)
JSON对象只是一个Javascript对象。如果您已经在使用jQuery,则可以再次使用$ .each()来迭代其命名属性。
答案 2 :(得分: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
}
}