2016-12-07 8 views
0

Я извлекаться данные JSON из facebook графа апи запрашивающего ГЭТ отКак получить изображения из Facebook Graph API в андроида

https://graph.facebook.com/YOUR_PAGE_ID/albums?fields=name,photos {картинка} & access_token = YOUR_ACCESS_TOKEN/

Json данных выглядит следующим образом:

{ 
    "data": [ 
    { 
     "name": "School Kids", 
     "photos": { 
     "data": [ 
      { 
      "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/15267641_1789056354665765_6384898034258459703_n.jpg?oh=44daa7be0ac1878e769bc16df444bd0a&oe=58B29329", 
      "id": "1789056354665765" 
      }, 
      { 
      "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/15356660_1789056361332431_834718824553815513_n.jpg?oh=69b3f1b1697808b87eed1e3053a67aaf&oe=58B735FB", 
      "id": "1789056361332431" 
      }, 
      { 
      "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/15356635_1789056401332427_1231396155404307815_n.jpg?oh=3de32d320ac6762adc0dbf8b1ef64e0e&oe=58F69648", 
      "id": "1789056401332427" 
      }, 
      { 
      "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/15380574_1789337074637693_1697389498501034556_n.jpg?oh=ddd57d119882b47172af689abde20cfb&oe=58F15477", 
      "id": "1789337074637693" 
      } 
     ], 
     "paging": { 
      "cursors": { 
      "before": "MTc4OTA1NjM1NDY2NTc2NQZDZD", 
      "after": "MTc4OTMzNzA3NDYzNzY5MwZDZD" 
      } 
     } 
     }, 
     "id": "1789056284665772" 
    }, 
    { 
     "name": "Cover Photos", 
     "photos": { 
     "data": [ 
      { 
      "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/14519945_1762073987364002_4539899568406717011_n.jpg?oh=fc8c02e9ced0839eea22d08859b964d0&oe=58BC80D4", 
      "id": "1762073987364002" 
      } 
     ], 
     "paging": { 
      "cursors": { 
      "before": "MTc2MjA3Mzk4NzM2NDAwMgZDZD", 
      "after": "MTc2MjA3Mzk4NzM2NDAwMgZDZD" 
      } 
     } 
     }, 
     "id": "1762074137363987" 
    }, 
    { 
     "name": "Profile Pictures", 
     "photos": { 
     "data": [ 
      { 
      "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/p130x130/14495327_1762072887364112_1611299743258720903_n.jpg?oh=ae87944069fd154e817468a38d9cb4a1&oe=58AE8D02", 
      "id": "1762072887364112" 
      } 
     ], 
     "paging": { 
      "cursors": { 
      "before": "MTc2MjA3Mjg4NzM2NDExMgZDZD", 
      "after": "MTc2MjA3Mjg4NzM2NDExMgZDZD" 
      } 
     } 
     }, 
     "id": "1762072884030779" 
    } 
    ], 
    "paging": { 
    "cursors": { 
     "before": "MTc4OTA1NjI4NDY2NTc3MgZDZD", 
     "after": "MTc2MjA3Mjg4NDAzMDc3OQZDZD" 
    } 
    } 
} 

Что я хочу от этих данных - получить изображение и название альбома и отобразить его в GridView в Android.

Моя попытка разбора этих данных как объект JSON из этого метода

public async void downloadJsonFeedAsync(string url) { 
 
    var httpClient = new HttpClient(); 
 
    Task <string> contentsTask = httpClient.GetStringAsync(url); 
 

 
    // await! control returns to the caller and the task continues to run on another thread 
 
    string content = await contentsTask; 
 
    Console.Out.WriteLine("Response Body: \r\n {0}", content); 
 

 
    //Convert string to JSON object 
 
    mObject = Newtonsoft.Json.JsonConvert.DeserializeObject <ImageGridItemRootObject> (content); 
 

 
    //Update listview 
 
    Activity.RunOnUiThread(() => { 
 
    mGridView.Adapter = new PhotoGalleryGridViewAdapter(this.Activity, Resource.Layout.PhotoGalleryGridItemView, mObject.data); 
 
    mProgressBar.Visibility = ViewStates.Gone; 
 
    }); 
 
}
// Корневой объект

public class ImageGridItemRootObject 
    { 
     public string name { get; set; } 
     public string photos { get; set; } 
     public List<ImageGridItem> data { get; set; } 

    } 

// ImageGridItem

public class ImageGridItem 
    { 
     private string picture; 
     private string id; 

     public ImageGridItem():base() 
     { 

     } 
     public string Picture 
     { 
      get { return picture; } 
      set { picture = value; } 
     } 

     public string Id 
     { 
      get { return id; } 
      set { id = value; } 
     } 
    } 

Проблема в том Я получаю изображение Nul л. Интересно, какой jSon Object и jSon Array, чтобы я мог форматировать rootObject для извлечения jSon Array.

Заранее спасибо.

ответ

0

Если вы возвращаемый JSON и использовать Правка> Специальная вставка> JSON в качестве классов в Visual Studio, вы получаете следующие классы:

public class Rootobject 
{ 
    public Datum[] data { get; set; } 
    public Paging paging { get; set; } 
} 

public class Paging 
{ 
    public Cursors cursors { get; set; } 
} 

public class Cursors 
{ 
    public string before { get; set; } 
    public string after { get; set; } 
} 

public class Datum 
{ 
    public string name { get; set; } 
    public Photos photos { get; set; } 
    public string id { get; set; } 
} 

public class Photos 
{ 
    public Datum1[] data { get; set; } 
    public Paging1 paging { get; set; } 
} 

public class Paging1 
{ 
    public Cursors1 cursors { get; set; } 
} 

public class Cursors1 
{ 
    public string before { get; set; } 
    public string after { get; set; } 
} 

public class Datum1 
{ 
    public string picture { get; set; } 
    public string id { get; set; } 
} 

Похоже, ваши классы не соответствуя JSON, что означает Deserializer не знает, что делать с ключом/значениями, которые не соответствуют вашему контракту.

Откорректируйте свои классы, чтобы они лучше соответствовали классам выше, и он будет десериализоваться с помощью URL-адресов изображений.

+0

Спасибо, Cheesebaron, это действительно помогло мне и сэкономить много времени .... +1 –

+0

@IshworKhanal [Что вы должны делать, когда кто-то отвечает на мой вопрос?] (Http://stackoverflow.com/help/someone -ответчики) Кажется, вы не приняли ни одного ответа, который вам дал. – RiggsFolly

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

  • Нет связанных вопросов^_^