JsonОбъект для модели Facebook SDK - PullRequest
8 голосов
/ 20 января 2011

Мне нужно использовать 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.Очевидно, это не работает, я получаю ошибку

Ошибка чтения JArray из JsonReader.Текущий элемент JsonReader не является массивом: StartObject

Я почти уверен, что поступаю совершенно неправильно, поэтому, если кто-нибудь сможет предложить какие-либо советы, я буду невероятно благодарен.1012 *

Ответы [ 2 ]

14 голосов
/ 21 января 2011

Может быть, этот код поможет:

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>

0 голосов
/ 14 февраля 2017

Вы также можете напрямую сопоставить полученные данные (JSON) со списком объектов, используя Json.NET . Примерно так:

var fbData = app.Get("me/friends"));
var friendsList = JsonConvert.DeserializeObject<List<Friend>>(fbData.ToString());

Он очень короткий и создает и заполняет список автоматически.

Примечание: отображение выполняется без учета регистра (свойство класса может иметь регистр, отличный от свойства JSON).

...