2013-06-05 2 views
0

Помощь! Это вырвало у меня дерьмо.Итерация над объектом JSON третьего уровня

Я получаю доступ к данным через API-интерфейс Facebook. Как получить имя приложения?

{ 
    "data": [ 
      { 
      "message": "Lorem ipsum dolor site amet.", 
      "application": { 
       "name": "Instagram", 
       "namespace": "instapp", 
       "id": "000000" 
      } 
      }, 
      { 
      "message": "2 Lorem ipsum dolor site amet.", 
      "application": { 
       "name": "Instagram", 
       "namespace": "instapp", 
       "id": "000000" 
      } 
      } 
     ] 
} 

Мой код до сих пор:

$.getJSON(url,function(data){      
    for(i=0; i < data.data.length; i++){ 
     var fbApp = data.data[i].application 
     var fbMessage = data.data[i].message; 
     $(".facebook").append('<p>'+ fbMessage +'</p>'); 
    }    
}); 

Выход для переменной fbApp будет [object Object] или undefined.

Изменение data.data[i].application до data.data[i].application['name'] дает мне имя, но только 1 объект, поэтому цикл останавливается.

Кажется, мне нужно будет перекрыть объект [ключ] (например, данные [сообщение]), чтобы перейти к приложению [name]. Как мне это сделать?

+3

В этом коде JSON отсутствует пара '}' – elclanrs

+0

Это была частичная копия и вставка из открытого графика FB ... Я не нашел времени, чтобы проверить его. – AAA

ответ

0

JSON недействителен. Должно быть:

"data": [ 
     { 
     "message": "Lorem ipsum dolor site amet.", 
     "application": { 
      "name": "Instagram", 
      "namespace": "instapp", 
      "id": "000000" 
     } 
     }, 
     { 
     "message": "2 Lorem ipsum dolor site amet.", 
     "application": { 
      "name": "Instagram", 
      "namespace": "instapp", 
      "id": "000000" 
     } 
     } 
    ] 

Также fbApp (основано на вар fbApp = data.data [я] .Application) является объектом (приложение), так что если вы хотите получить доступ к application.name тогда вы fbApp.name

+0

ОК, ну, это была копия и вставка из открытого графика FB ... Я не нашел времени, чтобы проверить его. – AAA

+0

Я сделал 'data.data [i] .application.name', но он останавливается в первом цикле. – AAA

+0

Должен работать. Созданный пример: http://jsfiddle.net/martemas/zSHDh/ Я разделил бит getJSON и предположил, что данные находятся в формате выше. – maethorr

Смежные вопросы