在下面的JSON示例中,当我不知道javascript中这些元素的id时,如何访问list
的项目。
{
"list":{
"93817":{
"item_id":"93817"
"url":"http://url.com",
"title":"Page Title"
},
"935812":{
"item_id":"935812",
"url":"http://google.com",
"title":"Google"
}
}
}
var jsonObject = JSON.parse(req.responseText);
var item = jsonObject.list[0] // This does not work
PS:我不能改变JSON的格式,因为它是由第三部分创建的。
答案 0 :(得分:4)
如果你的意思是你在编写程序时不知道它,但是在执行时,你可以使用:
var key = "935812";
console.log(object.list[key]);
如果您想要在执行时查看哪些键存在,您可以迭代这些键:
for (var key in object.list) {
if (object.list.hasOwnProperty(key)) {
console.log(key + ":", object.list[key]);
}
}
答案 1 :(得分:3)
您可以使用“for(i in obj)”Javascript构造迭代响应。请注意,以这种方式进行迭代可能会发现原型链中较高对象的属性(谁知道你的JSON对象经过了什么?),所以如果你愿意,你可以非常明确,并检查它。
response = {
"list":{
"93817":{
"item_id":"93817",
"url":"http://url.com",
"title":"Page Title"
},
"935812":{
"item_id":"935812",
"url":"http://google.com",
"title":"Google"
}
}
};
for (var id in response.list) {
if (response.list.hasOwnProperty(id)) {
// Now 'id' is the previously unknown id,
// and response.list[id] is the list items.
console.log(id, response.list[id]);
}
}
答案 2 :(得分:1)
var list = obj["list"];
for (item in list) {
if (list.hasOwnProperty(item)) {
alert( list[item].item_id );
}
}
在这种情况下,hasOwnProperty
检查可能不是必需的,但通常您可能希望确保它不是继承的属性。
答案 3 :(得分:1)
你像这样通过它们来循环:
for (i in jsonObj.list){
alert(a.list[i].title);
};