我在C#中使用Graph API工作,并能够获取Facebook用户个人资料信息,如ID,姓名和电子邮件,然后反序列化JSON以便能够分配要标签的值。Facebook Graph API检索json和C#的朋友#
但是,我的问题是,当我去抓朋友列表或任何事情的列表,我该如何去反序列化C#中的这个JSON信息,以便我可以存储数据?我相信我正在寻找一种将结果反序列化为字典对象的方式,以便我可以循环访问数据。
我在C#中使用Graph API工作,并能够获取Facebook用户个人资料信息,如ID,姓名和电子邮件,然后反序列化JSON以便能够分配要标签的值。Facebook Graph API检索json和C#的朋友#
但是,我的问题是,当我去抓朋友列表或任何事情的列表,我该如何去反序列化C#中的这个JSON信息,以便我可以存储数据?我相信我正在寻找一种将结果反序列化为字典对象的方式,以便我可以循环访问数据。
呃..我结束了使用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;
}
Thanks @zengr。我想我可以看看json.net – user402880 2010-07-27 11:25:28
你可以使用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
我目前使用.NET的反序列化器的非列表类型字段,如用户名和名称。如果可能的话,我希望能够坚持下去。 下面是我正在尝试阅读的朋友列表的一个示例。 {“data”:[{“id”:“123456”,“name”:“barney debble”},{“id” “987654”,“name”:“wilma flintstone”},{“id”:“123654”,“name”:“fred flintstone”}]} – user402880 2010-07-27 11:24:44