2013-08-02 2 views
0

У меня есть этот JSON:вложенная JSON с JQuery: создать список вложенного элемента

{ 
    "fakultaeten": [ 
     { 
      "id": "1", 
      "name": "Carl-Friedrich Gauß", 
      "institut": [ 
       { 
        "Mathematik": [ 
         { 
          "Verbrauch": "852 kWH", 
          "Effizienz": "5,5" 
         } 
        ], 
        "Informatik": [ 
         { 
          "Verbrauch": "852 kWH", 
          "Effizienz": "5,5" 
         } 
        ], 
        "Wirtschaftswissenschaften": [ 
         { 
          "Verbrauch": "852 kWH", 
          "Effizienz": "5,5" 
         } 
        ], 
        "Sozialwissenschaften": [ 
         { 
          "Verbrauch": "852 kWH", 
          "Effizienz": "5,5" 
         } 
        ] 
       } 
      ], 
      "verbrauch": "852 kWH" 
     } 
    ] 
} 

И я хочу, чтобы создать список всех элементов в "Institut", как это:

  • Mathematik
  • Infomratik
  • Wirtschaftswissenschaften
  • и т.д.

Я пытаюсь это:

$.each(data.fakultaeten, function(key,value) 
      { 
       var mother = "<li id='first'>"+value.name+"<ul>"; 
       $.each(value.institut, function(key1, value1) 
       { 
       // create the list here 
       }); 
      }) 

В результате только: [объект Object]

Что случилось с моим решением?

+1

У вас действительно есть JSON? Или у вас просто есть объект javascript? – musefan

+0

Это настоящий JSON. – lornz

+1

Я не думаю, что если вы получаете «данные» от асинхронного вызова, это, скорее всего, объект javascript. JSON может быть только строкой, если у вас есть строка, тогда вы должны разобрать ее с помощью 'JSON.parse (jsonString)' – musefan

ответ

1

Ваша проблема в том, что institut - это массив, содержащий один объект, поэтому вы можете ссылаться на этот единственный объект, используя institut[0].

Это будет работать:

$.each(data.fakultaeten, function (key, value) { 
    var mother = "<li id='first'>" + value.name + "<ul>"; 
    $.each(value.institut[0], function (key1, value1) { 
     alert(key1); 
    }); 
}); 

Here is a working example

0

Попробуйте это:

$.each(data.fakultaeten, function (key, value) { 
    var mother = "<li id='first'>" + value.name + "<ul>"; 
    $.each(value.institut[0], function (key1, value1) { 
     console.log(key1); // key1 gives you output that you want 
    }); 
});