2011-02-10 2 views
0

Хорошо, я довольно новичок в jQuery JSON. Я пытаюсь получить доступ к узлу actions > name в нижнем выводе json. Похоже, что «действия» - это массив внутри массива «данные». То, как я получаю результаты json, могу правильно получить доступ к «сообщению», используя fb.message, и я могу получить доступ к узлу «name» под «from» с помощью fb.from.name. Итак, как мне получить доступ к узлу «name» под «действиями» массив?

Спасибо за помощь!

КОД:

({ "data": [{ 
     "id": "1755670903_1287007912714", 
     "from": { 
      "name": "LifeBridge Church", 
      "id": "1755670903" 
     }, 
     "message": "Due to weather, church service tomorrow is canceled. See you next week!", 
     "icon": "http://photos-d.ak.fbcdn.net/photos-ak-snc1/v27562/23/2231777543/app_2_2231777543_9553.gif", 
     "actions": [ 
      { 
       "name": "\u0040lifebridgeTX on Twitter", 
       "link": "http://twitter.com/lifebridgeTX?utm_source=fb&utm_medium=fb&utm_campaign=lifebridgeTX&utm_content=33711605665505280" 
      } 
     ], 
     "type": "status", 
     "application": { 
      "name": "Twitter", 
      "id": "2231777543" 
     }, 
     "created_time": "2011-02-05T02:20:48+0000", 
     "updated_time": "2011-02-05T02:20:48+0000" 
     }, 
     { 
     "id": "1755670903_1281724020620", 
     "from": { 
      "name": "LifeBridge Church", 
      "id": "1755670903" 
     }, 
     "message": "Service tonight at 5:30... meet us at Eddins Elementary school in McKinney. http://see.sc/8l4Cwo || Praying that God is greatly glorified!", 
     "icon": "http://photos-d.ak.fbcdn.net/photos-ak-snc1/v27562/23/2231777543/app_2_2231777543_9553.gif", 
     "actions": [ 
      { 
       "name": "\u0040lifebridgeTX on Twitter", 
       "link": "http://twitter.com/lifebridgeTX?utm_source=fb&utm_medium=fb&utm_campaign=lifebridgeTX&utm_content=31388610301272065" 
      } 
     ], 
     "type": "status", 
     "application": { 
      "name": "Twitter", 
      "id": "2231777543" 
     }, 
     "created_time": "2011-01-29T16:30:03+0000", 
     "updated_time": "2011-01-29T16:30:03+0000" 
     }] 
}); 

Последующие меры код дополнительные вопросы:

$.each(json.data,function(i,fb){ 
    if (!fb.message) continue; 
    facebookPost += '<li class="ui-li ui-li-static ui-btn-up-c" role="option" data-theme="c">' + fb.message + ' <br /><span class="via">' + fb.created_at + ' via ' + fb.actions[0].name + '</span></li>'; 
    $('#facebookPosts li:first').after(facebookPost); 
}); 

ответ

1

Я предполагаю, что когда вы говорите fb, что fb = data[0]. Тогда:

fb.actions; // Gives actions ARRAY 
fb.actions[0]; // Gives first OBJECT in actions ARRAY 
fb.actions[0].name; // Gives the name VALUE of the first OBJECT in actions ARRAY 

От вопроса в комментариях, чтобы пропустить пункты, если значение не существует:

$.each(json.data,function(i,fb){ 
    if (!fb.message) return true; // true to keep going, false to quit immediately 
    facebookPost += '<li class="ui-li ui-li-static ui-btn-up-c" role="option" data-theme="c">' + fb.message + ' <br /><span class="via">' + fb.created_at + ' via ' + fb.actions[0].name + '</span></li>'; 
    $('#facebookPosts li:first').after(facebookPost); 
}); 
+0

спасибо, что это было именно то, что мне нужно! Кроме того, если вам известно ... я просматриваю все объекты массива данных. Как я могу удалить один из цикла, если он возвращает undefined? Или есть простой способ сделать это? Дайте мне знать, если вам нужен пример кода. – RyanPitts

+0

@Ryan, когда что возвращает 'undefined'? И, удалив, вы имеете в виду пропустить его (перейти к следующему элементу в цикле)? –

+0

Извините, это было немного расплывчато. да, некоторые объекты не имеют «сообщения», а мой цикл создает элемент списка, например: (это код внутри моего..). fbPost + = '

  • '+ fb.message +'
    через '+ fb.actions [0] .name + '
  • '; '. Если нет «сообщения», мне бы хотелось, чтобы цикл пропустил его. – RyanPitts

    1

    объекты JSON просто нормальные JavaScript объекты, доступ к ним так же, как обычно, чтобы получить i тыс элемент данных j-го действия вы можете использовать следующий код. чтобы получить первый из каждого, вы можете просто сделать hardcode i=j=0.

    jsonResponse.data[i].actions[j].name 
    
    +0

    спасибо ... ваш и другой ответ помогли исправить мою проблему! Я решил пойти с ним, но я все равно дам вам точку. – RyanPitts

    0

    Вы можете получить доступ к первому элементу в массиве:

    fb.actions[0].name