Javascript JSON循环计数不超过1个条目

Javascript JSON循环计数不超过1个条目,javascript,jquery,json,Javascript,Jquery,Json,我正在阅读一些json代码,最后添加了一个日志,可以给我id。 我的问题是,虽然有2个条目,但日志只计数1,并在那里停止 var json = [{"main":[{ "id" : "1", "msg" : "hi", "tid" : "2013-05-05 23:35", "fromWho": "hello1@email.se" }, { "id" : "2", "msg" : "there", "tid" : "2013-0

我正在阅读一些json代码,最后添加了一个日志,可以给我id。 我的问题是,虽然有2个条目,但日志只计数1,并在那里停止

var json = [{"main":[{
    "id" : "1", 
    "msg"   : "hi",
    "tid" : "2013-05-05 23:35",
    "fromWho": "hello1@email.se"
},
{
    "id" : "2", 
    "msg"   : "there",
    "tid" : "2013-05-05 23:45",
    "fromWho": "hello2@email.se"
}]}];

for(var i = 0; i < json.length; i++) {
    var obj = json[i];

    console.log(obj['main'][i].id);
}

为什么只计算1而不计算2?

您有一个包含1个元素“main”的数组,而在“main”中有一个包含2个元素的数组 更改为:

  for(var i = 0; i < json[0].length; i++) {      
        console.log(json[0][i].id);
    }

因为必须通过json[0].main循环,而不是通过json…

发生这种情况是因为数组包含一个对象。我想您需要访问主属性:

for(var i = 0; i < json[0].main.length; i++) {
    console.log(json[0].main[i].id);
}
var json=[{main:[{ id:1, 味精:嗨, tid:2013-05-05 23:35, 世卫组织:hello1@email.se }, { id:2, 味精:那里, tid:2013-05-05 23:45, 世卫组织:hello2@email.se }]}]; forvar i=0;i 用于在数组中循环

var _getMain = json[0].main // will return main array;
_getMain.forEach(function(item){
document.write('<pre>'+item.id+'</pre>')
})

这里的一些答案会把你搞糊涂的!他们忽略了一个事实,即在数组中的对象中有一个数组

json是一个数组,包含1个元素 该对象有一个本身是数组的属性main 这是您尝试循环通过的第三级阵列 var json=[{main:[{ id:1, 味精:嗨, tid:2013-05-05 23:35, 世卫组织:hello1@email.se }, { id:2, 味精:那里, tid:2013-05-05 23:45, 世卫组织:hello2@email.se }]}]; forvar i=0;i}因为json是一个包含1个元素的数组。该元素包含另一个对象数组。那不是JSON,那是JavaScript数组。我注意到了这一点,奇怪的是,这不仅仅是一个对象本身。像洋葱一样有很多层。