2016-12-07 37 views
0

我已經從Facebook圖形API請求GET從如何檢索來自Facebook圖形API圖像在機器人

檢索JSON數據

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" 
    } 
    } 
} 

我想從這些數據中獲取圖像和專輯名稱並顯示在Android的GridView中。

我嘗試解析這些數據作爲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對象,哪個是jSon數組,以便我可以按順序格式化rootObject以檢索jSon數組。

預先感謝您。

回答

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,這意味着反序列化器不知道如何處理合約中不匹配的鍵/值。

調整你的類,以更好地匹配上面的類,它將反序列化的圖像URL。

+0

謝謝Cheesebaron它確實幫助我,並節省了我很多時間.... +1 –

+0

@IshworKhanal [當某人回答我的問題時,應該怎麼做?](http://stackoverflow.com/help/someone -answers)你似乎沒有接受你給出的單一答案。 – RiggsFolly