Проблема с $ .getJSON - выглядит как массивы внутри массивов - PullRequest
0 голосов
/ 10 февраля 2011

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

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

КОД:

({ "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);
});

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

Я предполагаю, когда вы говорите 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);
});
1 голос
/ 10 февраля 2011

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

jsonResponse.data[i].actions[j].name
0 голосов
/ 10 февраля 2011

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

fb.actions[0].name
...