JsonObject模型Facebook SDK

时间:2011-01-20 14:56:40

标签: c# json .net-3.5 json.net facebook-c#-sdk

我必须使用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

我很确定我在这方面走错了路 - 所以如果有人能提供任何提示,我会非常感激。

2 个答案:

答案 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属性不同的大小写)。