C# JsonObject为Facebook SDK建模

C# JsonObject为Facebook SDK建模,c#,json,.net-3.5,json.net,facebook-c#-sdk,C#,Json,.net 3.5,Json.net,Facebook C# Sdk,我不得不在.NET3.5中的一个新项目中使用facebook c#sdk,我知道最新版本有4个示例,但它也是根据3.5编译的,因此完全可以工作 不管怎样,如果我真的很笨,请原谅我。但是我想把一个json对象转换成我的模型,我可以这样做吗 public ActionResult About() { var app = new FacebookApp(); JsonObject friends = (JsonObject)app.Get("me/friends"); View

我不得不在.NET3.5中的一个新项目中使用facebook c#sdk,我知道最新版本有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


我敢肯定,我在这方面完全走错了路——因此,如果有人能提供任何建议,我将不胜感激。

也许这段代码会有所帮助:

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);
}
公共类好友
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
}
...
关于()的公共行动结果
{
var app=新的FacebookApp();
var result=(JsonObject)app.Get(“我/朋友”);
var模型=新列表();
foreach(在(JsonArray)结果[“数据”]中的变量友元)
model.Add(新朋友()
{
Id=(字符串)((JsonObject)friend)[“Id”],
Name=(字符串)((JsonObject)friend)[“Name”])
};
返回视图(模型);
}

现在,您的模型将是
List

类型,您还可以使用直接从接收数据(JSON)映射到对象列表。如下所示:

var fbData = app.Get("me/friends"));
var friendsList = JsonConvert.DeserializeObject<List<Friend>>(fbData.ToString());
var fbData=app.Get(“我/朋友”);
var friendsList=JsonConvert.DeserializeObject(fbData.ToString());
它非常短,并自动创建和填充列表

注意:映射是以不区分大小写的方式完成的(类属性可以有不同于JSON属性的大小写)