2015-09-08 48 views
0

我完全陷入困境,我相信问题很小,但我无法理解它。我无法找到正确显示从Array获得的内容的方式。我已经搜索过,但找不到任何正确的答案。使用jQuery在JSON中循环嵌套对象

这里是JSON:

{ 
"rooster": { 
    "weekdag": { 
     "1": { 
      "uur": { 
       "1": { 
        "teacher": "EVDIS", 
        "subject": "ENG", 
        "room": "312" 
}, 

要一点点进一步解释,weekdag包含5个对象代表的星期几。其中有一个名为uur的对象。它代表了一个小时。每天包含10

当前用于显示所有数据的代码:

$.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: '/c00012.json', 
    success: function (data) { 
     //Sort of displays the schedule 
     $.each(data.rooster.weekdag[1].uur, function() { 
      $.each(this, function(name, value) { 
       document.write(value); 
      }); 
     }); 
    } 
}); 

它这个显示:

ENGEVDIS312ENGEVDIS312SDEMONK308SDEMONK308 

所以,我想达到什么是打印它是这样的:

Hour 1: Teacher: EVDIS 
     Subject: ENG 
     Room: 312 
Hour 2: Teacher: EVDIS 
     Subject: ENG 
     Room: 312 

我可能已经解释了它有点奇怪,如果需要任何其他信息 让我知道。

+0

正如抬起头,你绝对**不**想用'document.write'一旦异步请求在页面完成后很长时间完成它的初始加载,请参阅此问题:http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice – Nit

+0

我假设你希望将其作为格式化的HTML,而不仅仅是打印在页面上的值。最好的选择是使用模板。搜索jquery模板。 – codemonkey

+0

名字应该像“老师”,“主题”等等($ .each(this,function(name,value){)。)。您当前只使用值。 –

回答

1

取代循环访问uur对象属性,获取特定的属性。例如:

$.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: '/c00012.json', 
    success: function (data) { 
    //Sort of displays the schedule 
    $.each(data.rooster.weekdag[1].uur, function(h, obj) { 
     document.write(
     'Hour ' + h + ': Teacher: ' + obj.teacher + '<br>' + 
     'Subject: ' + obj.subject + '<br>' + 
     'Room: ' + obj.room 
    ); 
    }); 
    } 
}); 
+0

啊,现在我明白了。如我所愿,谢谢! – user1997204

0
$.each(this, function(name, value) { 
    for(int i = 0; i<value.length; i++) 
    { 
    var result = "Hour " + (i+1) + ": Teacher: " value[i].teacher + \n + 
    "Subject: " + value[i].Subject + \n + 
    "Room: " + value[i].Room; 
    } 
}); 

这是飞快地写着,但你会得到的地步,我相信