如何用jQuery解析大JSON?

时间:2012-07-09 15:35:27

标签: jquery json

我尝试开发一个小小的网络日历。用户可以获得一周的概述,如果他在下周推送我,那么接下来的7天应该与jQuery异步加载。 JSON数据看起来像:

{
   "user":[
      {
         "id":"12345",
         "days":{
            "09-07-2012":{
               "10:00":{
                  "time":"10:00",
                  "length":"30",
                  "appointmentid":"159487"
               },
               "11:00":{
                  "time":"11:00",
                  "length":"30",
                  "appointmentid":"159487"
               },
               "12:00":{
                  "time":"12:00",
                  "length":"30",
                  "appointmentid":"159487"
               }
            },
            "10-07-2012":{
               "10:00":{
                  "time":"10:00",
                  "length":"30",
                  "appointmentid":"159487"
               },
               "11:00":{
                  "time":"11:00",
                  "length":"30",
                  "appointmentid":"159487"
               },
               "12:00":{
                  "time":"12:00",
                  "length":"30",
                  "appointmentid":"159487"
               }
            },
            "11-07-2012":{
               "10:00":{
                  "time":"10:00",
                  "length":"30",
                  "appointmentid":"159487"
               },
               "11:00":{
                  "time":"11:00",
                  "length":"30",
                  "appointmentid":"159487"
               },
               "12:00":{
                  "time":"12:00",
                  "length":"30",
                  "appointmentid":"159487"
               }
            }
         }
      }
   ]
}

我如何处理这些数据并将其显示在html表中?使用jQuery函数,我只能走第二维...所以我只能得到id和天......

$.each(data.user, function(i,data){
...
}

那么我怎么能走完整个阵列并用数据填充我的ui?我应该使用嵌套的每个函数吗?

电贺 托马斯

1 个答案:

答案 0 :(得分:2)

一旦解析完毕,你可以简单地在属性中走路,因为你拥有的是一个javascript对象。

在这种特定情况下,您在地图中有地图。

要迭代此类对象的属性,请使用for (var key in object)构造:

您的用户ID为data.user.id

for (var date in data.user.days) {
   var day = data.user.days[date];
   for (var hour in day) {
      var appointement = day[hour];
      // use the hour and appointement objects and their properties.

我不知道这个对象的大小是否符合“大”的要求,但在迭代几MB的对象时没有问题(除了下载持续时间)。