Thd*_*hdK 1 c# json facebook facebook-graph-api
我刚刚发现facebook使用FQL方法返回的JSON数据的格式与facebook图api返回的JSON格式不同.
例如:
FQL <> GRAPH
uid <> id
work_history <> work
education_history <> education
Run Code Online (Sandbox Code Playgroud)
字段名称和数组中对象的结构也不同.
我在我的网站上使用FQL和GRAPH.因为我不想制作2个facebook用户类.我决定只使用图形api.
我现在正在尝试获取用户朋友列表,包括工作和教育数据.
我不确定你是否需要我的代码,但如果你需要它来解决我的问题,这里是:(我想要处理的json字符串更多)
public static List<FbUser> getFriends(string id, string token)
{
//get all id's of friends
string jsonUrl = graphUrl + "/" + id + "/friends?access_token=" + token;
var json = new WebClient().DownloadString(jsonUrl);
FbUserList useridlist = JsonConvert.DeserializeObject<FbUserList>(json);
//get all data of friends
jsonUrl = graphUrl + "?ids=" + useridlist.getIds() + "&access_token=" + token;
json = new WebClient().DownloadString(jsonUrl);
List<FbUser> userlist = JsonConvert.DeserializeObject<List<FbUser>>(json.Insert(0,"[") + "]");
return userlist;
}
Run Code Online (Sandbox Code Playgroud)
useridlist.cs
public class FbUserList
{
private List<FbObject> _data;
public List<FbObject> data
{
get
{
return _data;
}
set
{
_data = value;
}
}
public string getIds()
{
string result = "";
foreach (FbObject o in _data) {
result += o.id + ",";
}
string test = result.Substring(0, result.Length - 1);
return test;
}
}
Run Code Online (Sandbox Code Playgroud)
在此之后,在json变量中,我得到以下数据:
[{"505757632":{"id":"505757632","name":"Cecilia demo","first_name":"Cecilia", ....},
{"507493765":{"id":"507493765","name":"Bjorn demo","first_name":"Bjorn", .....}
, ... ]
Run Code Online (Sandbox Code Playgroud)
我不知道如何从这些数据中获取用户对象列表.用户对象具有以下字段:id,name,first_name,...所以我需要摆脱缠绕在我的用户对象上的附加对象.
很感谢任何形式的帮助!
扭曲用户记录的对象是Dictionary.
class FbUser()
{
public string id { get;set;}
public string name { get;set;}
public string first_name { get;set;}
.... a property name for every data element in the returned record.
}
Dictionary<string,FbUser> userlist = JsonConvert.DeserializeObject<Dictionary<string,FbUser>();
Run Code Online (Sandbox Code Playgroud)
如果您确实需要数据作为列表,您可以执行类似的操作.
List<FbUser> userlist = JsonConvert.DeserializeObject<Dictionary<string,FbUser>().Values.ToList<FbUser>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1225 次 |
最近记录: |