1

Facebook SDK for .NET を使用して、ページから Facebook の投稿を取得し、それらをアプリに表示しています。私は次のクラスを持っています:

public class Posts
{
    public string id { get; set; }

    public string Name { get; set; }

    public string Message { get; set; }

    public Uri PictureUri { get; set; }
}

public class FacebookPostsData
{
    private static ObservableCollection<Posts> posts = new ObservableCollection<Posts>();

    public static ObservableCollection<Posts> Posts
    {
        get
        {
            return posts;
        }
    }
}

そして、投稿を取得する次のコード:

       FacebookClient fb = new FacebookClient(App.AccessToken);

       dynamic postsTaskResult = await fb.GetTaskAsync("/mypage?fields=posts");
       var result = (IDictionary<string, object>)postsTaskResult;           
       var data = (IEnumerable<object>)result["posts"];

        foreach (var item in data)
        {
            var post = (IDictionary<string, object>)item;

            FacebookPostsData.Posts.Add(new Posts { Name = (string)post["name"], id = (string)post["id"], Message = (string)post["message"], PictureUri = new Uri(string.Format("{0}", (string)post["picture"])) });
        }

        Frame.Navigate(typeof(Pages.next));

ただし、result["posts"] は Json オブジェクトを返し、次のエラーが発生します。

タイプ 'Facebook.JsonObject' のオブジェクトをタイプ 'System.Collections.Generic.IEnumerable`1[MyProject.ViewModel.Posts]' にキャストできません。

オブジェクトを変換する方法についてのアイデアはありますか?

オブジェクトは、次のような Facebook 投稿です。

 "id": "339150749455906", 
 "posts": {
  "data": [
  {
    "id": "339150749455906_545370565500589", 
    "from": {
      "category": "Food/beverages", 
      "name": "Pepsi", 
      "id": "339150749455906"
    }, 
    "story": "Pepsi updated their cover photo.", 
    "picture": "http://photos-g.ak.fbcdn.net/hphotos-ak-ash3/942740_545370555500590_46289134_s.jpg", 
    "link": "http://www.facebook.com/photo.php?fbid=545370555500590&set=a.365573920146922.72816.339150749455906&type=1&relevant_count=1", 
    "icon": "http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif", 
    "actions": [
      {
        "name": "Comment", 
        "link": "http://www.facebook.com/339150749455906/posts/545370565500589"
      }, 
      {
        "name": "Like", 
        "link": "http://www.facebook.com/339150749455906/posts/545370565500589"
      }
    ], 
    "privacy": {
      "value": ""
    }, 
4

1 に答える 1