Barcelonista Naser Ответов: 0

Как мне де-сериализовать массив json и разместить его в представлении модели MVC?


Код проекта, у меня есть "Json", полученный из вызова API facebook. Как здесь ниже:
{"data":[{"id":"1264038093655465_1274837905908817","from":{"id":"1264038093655465","name":"Naser Dostdar","picture":{"data":{"url":"https://scontent.xx.fbcdn.net/v/t1.0-1/p50x50/15178246_1239033029489305_8223781070150796361_n.jpg?oh=cca928f11f42edaac99e72be286161c3&oe=59245409"}}},"message":"امروز یک روز فوق العاده بود، یک دوست و همکارم را بعد از مدت دو سال دیدم!\nتشکر نادر صاحب بخاطر مهمانی\n@ Baser Nader","type":"status","created_time":"2017-01-05T14:36:47+0000","likes":{"data":[{"id":"10154729171332597","name":"Sayed Zubair Hashimi"},{"id":"1821833754756701","name":"Junaid Walizada"},{"id":"648198542030750","name":"Mohib Akhondzada"},{"id":"360411140983593","name":"Za Beah"},{"id":"10153975726331432","name":"Baser Nader"},{"id":"444098429312431","name":"Abasin Deniz"}]


Хотя я сократил массив Json, но вопрос остается тем же. Массив JSON-это проверено, чтобы быть действительным на www.jsonlint.com.
Итак, вопрос в том, как я могу де-сериализовать этот массив Json, а затем передать ему свою модель представления, которая находится здесь, как показано ниже:
public class Datum2
{
    public string name { get; set; }
    public string pic_large { get; set; }
    public string id { get; set; }
}
public class Likes
{
    public List<Datum2> data { get; set; }
}

public class Datum
{
    public string id { get; set; }
    public Likes likes { get; set; }
}
public class RootObject
{
    public List<Datum> data { get; set; }
}


Что я уже пробовал:

dynamic myFeed = await fb.GetTaskAsync(
                     ("me/feed?fields=likes{{name,pic_large}}")
                     .GraphAPICall(appsecret_proof));

Я попытался разобрать динамический myFeed в строку следующим образом:
string json = myFeed.data.ToString();

Затем JsonConvert, чтобы де-сериализации JSON в класс RootObject как показано здесь:
var result = JsonConvert.DeserializeObject<List<RootObject>>(json);


Но в то время как в режиме отладки вы всегда видите, что свойства поля в классе Datum2 всегда равны нулю.

Richard MacCutchan

данные содержат массив, а не список, и другие ваши определения, по-видимому, не соответствуют фактическому содержимому JSON.

Barcelonista Naser

Так что же делать? мысли?

Richard MacCutchan

Я думал, что это очевидно. Объявите свои классы так, чтобы они соответствовали фактическим данным, возвращаемым вам. Видеть Как сериализовать и десериализовать данные JSON [^] для дальнейшей помощи.

Barcelonista Naser

Я буду очень признателен, если вы дадите исчерпывающий ответ, поскольку я очень новичок в C# и Json. Спасибо!

Richard MacCutchan

Это исчерпывающий ответ; перейдите по ссылке и узнайте, как правильно десериализовать JSON.

Barcelonista Naser

Приведенная ссылка слишком сложна для понимания, по крайней мере для меня, новичка в программировании на C#. в любом случае спасибо за поддержку

Richard MacCutchan

Если вы не можете понять что-то такое базовое, я не думаю, что вам будет легко работать с MVC.

Barcelonista Naser

Люди обычно задают вопросы, чтобы получить на них ответы и чему-то научиться. Не подвергаться критике за так называемую способность к обучению. Это все, что я теперь знаю.

Richard MacCutchan

Я не критикую, я просто указываю на то, что MVC значительно сложнее понять, чем десериализацию JSON. И я дал вам ссылку на статью, которая объясняет, как это сделать. Как я уже сказал, Если вам это трудно понять, то вам будет еще труднее найти MVC. Ваше время может быть лучше потрачено на знакомство с основами, а не пытаться начать с продвинутых предметов.

Barcelonista Naser

Так что ваш последний комментарий - это то, о чем стоит подумать. Да, я должен сначала перейти к основам, а не к продвинутым темам. Спасибо!

Sunasara Imdadhusen

Похоже, что ваш объект модели не соответствует структуре объекта JSON. Не могли бы вы поделиться отформатированным ответом JSON здесь.

0 Ответов