【问题标题】:Facebook Graph API retrieve Friends with json and C#Facebook Graph API 使用 json 和 C# 检索好友
【发布时间】:2011-03-21 09:29:50
【问题描述】:

我正在使用 Graph API 在 C# 中工作,并且已经能够获取 Facebook 用户个人资料信息,例如 ID、姓名和电子邮件,然后反序列化 JSON 以便能够将值分配给标签。

但是,我的问题是,当我去获取好友列表或任何相关列表时,如何在 C# 中反序列化此 JSON 信息以便存储数据?我相信我正在寻找一种将结果反序列化为字典对象的方法,以便我可以循环遍历数据。

【问题讨论】:

  • 您可以像下面提到的@zengr 那样使用 JSON 解析器,但实际上 - 大多数 JSON 反序列化可以使用内置的 .NET deseriazlier - DataContractJsonSerializer 来完成。您只需要尝试反序列化的类的正确属性(DataMember)。也许您可以粘贴 JSON 的样子?也许看看这个 SO 问题:stackoverflow.com/questions/596271/…
  • 我目前正在将 .NET 反序列化程序用于非列表类型字段,例如用户 ID 和名称。如果可能的话,我希望能够坚持下去。这是我正在尝试读取的好友列表的示例。 {"data":[{"id":"123456","name":"barney rubble"},{"id":"987654", "name":"wilma flintstone"},{"id":"123654","name":"fred flintstone"}]}

标签: c# json facebook parsing


【解决方案1】:

嗯..我最终使用了 JSON.Net,效果很好。谢谢你为我指明了那个方向。在我找到的另一篇文章 (http://www.mattcashatt.com) 和 JSON.net 文件的帮助下,我能够让一切正常工作。这是我使用的一些代码。

            #region JSON.Net User Profile
            //Profile URL
            url = "https://graph.facebook.com/me?fields=id,name,email&access_token=" + oAuth.Token;

            JObject myProfile = JObject.Parse(requestFBData(url));
            string myID = myProfile["id"].ToString().Replace("\"", "");
            string myName = myProfile["name"].ToString().Replace("\"", "");
            string email = myProfile["email"].ToString().Replace("\"", "");

            lblID.Text = myID;
            lblFullName.Text = myName;
            lblEmail.Text = email;
            imgUser.ImageUrl = "https://graph.facebook.com/me/picture?type=large&access_token=" + oAuth.Token;

            #endregion


            #region JSON.Net Friends

            //Friends URL
            url = "https://graph.facebook.com/me/friends?access_token=" + oAuth.Token;


            JObject myFriends = JObject.Parse(requestFBData(url));

            string id="";
            string name = "";

            //Loop through the returned friends
            foreach (var i in myFriends["data"].Children())
            {
                id = i["id"].ToString().Replace("\"", "");
                name = i["name"].ToString().Replace("\"", "");
                lblFriends.Text = lblFriends.Text + "<br/> " + "id: " + id + " name: " + name + "<img src=" + "https://graph.facebook.com/" + id + "/picture>";
            }

            #endregion



        }
    }

}

public string requestFBData(string action)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(action);
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

    StreamReader sr = new StreamReader(resp.GetResponseStream());
    string results = sr.ReadToEnd();
    sr.Close();

    return results;
}

【讨论】:

  • 您最终使用了哪个 JSON 解析器?
【解决方案2】:

您需要一个用于 C# 的 JSON 解析器。

这可能会有所帮助:parsing JSon using JSon.net

还有很多其他的 C# JSON 解析器:

  1. JSON Checker

  2. JAYROCK

更多here

【讨论】:

  • 谢谢@zengr。我想我可以看看 json.net
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多