1

私は小さなウェブカレンダーを開発しようとしています。ユーザーは1週間の概要を取得し、「来週表示」を押すと、次の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関数を使用すると、2番目の次元をスローすることしかできません...したがって、IDと日数のみを取得します...

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

では、どのようにして配列全体をスローし、UIにデータを入力することができますか?ネストされた各関数を使用する必要がありますか?

トーマスに挨拶

4

1 に答える 1

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のオブジェクトを反復処理しても問題はありません(ダウンロード期間は別として)。

于 2012-07-09T15:38:53.257 に答える