我必须使用facebook c#sdk作为.net 3.5中的新项目,我知道最新版本有4个示例 - 但它也是针对3.5编译的,所以完全可以工作。
无论如何,如果我非常愚蠢,请原谅我。但是我想将一个json对象转换成我的模型,我可以这样做吗?
public ActionResult About()
{
var app = new FacebookApp();
JsonObject friends = (JsonObject)app.Get("me/friends");
ViewData["Albums"] = new Friends((string)friends.ToString());
return View();
}
public class Friends
{
public string name { get; set; }
public string id { get; set; }
public Friends(string json)
{
JArray jObject = JArray.Parse(json);
JToken jData = jObject["data"];
name = (string)jData["name"];
id = (string)jData["id"];
}
}
这是使用Json.Net。显然这不起作用,我得到的错误是
从JsonReader读取JArray时出错。当前的JsonReader项不是数组:StartObject
我很确定我在这方面走错了路 - 所以如果有人能提供任何提示,我会非常感激。
答案 0 :(得分:14)
也许这段代码会有所帮助:
public class Friend
{
public string Id { get; set; }
public string Name { get; set; }
}
...
public ActionResult About()
{
var app = new FacebookApp();
var result = (JsonObject)app.Get("me/friends"));
var model = new List<Friend>();
foreach( var friend in (JsonArray)result["data"])
model.Add( new Friend()
{
Id = (string)(((JsonObject)friend)["id"]),
Name = (string)(((JsonObject)friend)["name"])
};
return View(model);
}
现在您的模型类型为List<Friend>
答案 1 :(得分:0)
您还可以使用Json.NET直接将收到的数据(JSON)映射到对象列表。像这样:
var fbData = app.Get("me/friends"));
var friendsList = JsonConvert.DeserializeObject<List<Friend>>(fbData.ToString());
它很短,自动创建和填充列表。
注意:映射是以不区分大小写的方式完成的(类属性可以具有与JSON属性不同的大小写)。