Как мне де-сериализовать массив 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 здесь.