循环遍历包含对象数组的JSON对象

时间:2011-06-29 09:39:06

标签: javascript json object for-loop

真的希望有人可以帮助我,这让我生气了...

我有一个JSON对象,源代码为:

[{"description":"General Accessories & Parts","id":"1"},{"description":"General Parts","id":"2"},{"description":"Parts","id":"3"}]

这是从PHP返回的数组,它看起来像这样:

$array[0]['description']="General Accessories & Parts";
$array[0]['id']="1";

$array[1]['description']="General Parts";
$array[1]['id']="2";

etc...

所以,我将数组放入我的JavaScript代码中:

obj=eval(ajax.responseText);

现在我需要遍历数组中每个元素的描述和id,我试过这个:

for(var key in obj){
    if(!obj[key].hasOwnProperty(key)) continue;

    alert(obj[key]['description']);
}

我尝试的上述代码只是echos [object Object],[object Object],[object Object],这是我知道的3个对象。

3 个答案:

答案 0 :(得分:0)

使用

alert( obj[0].description );

而不是

alert( obj[0]['description'] );

简单示例:http://jsfiddle.net/W4dwx/

答案 1 :(得分:0)

奇怪的代码:if(!obj [key] .hasOwnProperty(key))

在您的情况下,键变量将迭代值0,1,2

你会要求obj [0] .hasOwnProperty(0)

答案 2 :(得分:0)

我无法真正复制你的答案,但我很确定问题是a)在你的回复文本中(我们是否有机会得到确切输出的警告?)或b)在你的for循环中(你在迭代一个数组,所以不应该拥有自己的属性):

var a = [{"description":"General Accessories & Parts","id":"1"},
         {"description":"General Parts","id":"2"},
         {"description":"Parts","id":"3"}];
var b = JSON.stringify(a);
eval("var c = " + b);
for (var i = 0; i < c.length; i++) {
  alert(c[i].description); // alert the three values you want
}