2010-07-27 44 views
4

我在C#中使用Graph API工作,并能够获取Facebook用户个人资料信息,如ID,姓名和电子邮件,然后反序列化JSON以便能够分配要标签的值。Facebook Graph API检索json和C#的朋友#

但是,我的问题是,当我去抓朋友列表或任何事情的列表,我该如何去反序列化C#中的这个JSON信息,以便我可以存储数据?我相信我正在寻找一种将结果反序列化为字典对象的方式,以便我可以循环访问数据。

+0

你可以使用JSON解析器@zengr下面提到的,但真的 - DataContractJsonSerializer - 最JSON反序列化可以用内置的.NET deseriazlier来完成。您只需在要尝试反序列化的类上使用正确的属性(DataMember)。也许你可以粘贴JSON的样子?也许看看这个SO问题:http://stackoverflow.com/questions/596271/deserialization-problem-with-datacontractjsonserializer – RPM1984 2010-07-27 06:39:25

+0

我目前使用.NET的反序列化器的非列表类型字段,如用户名和名称。如果可能的话,我希望能够坚持下去。 下面是我正在尝试阅读的朋友列表的一个示例。 {“data”:[{“id”:“123456”,“name”:“barney debble”},{“id” “987654”,“name”:“wilma flintstone”},{“id”:“123654”,“name”:“fred flintstone”}]} – user402880 2010-07-27 11:24:44

回答

10

呃..我结束了使用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; 
} 
+1

感谢这个快速简单的例子。 – sondlerd 2010-11-13 20:18:17

+0

您最终使用了哪个JSON解析器? – abhi 2013-03-05 19:27:34

相关问题