Я получаю этот json из API.
string json = "{'serviceSession':{ '123123123':[{'apn':'abc'},{'apn':'bcd'},{'apn':'def'}]}}";
Когда я пытаюсь десериализовать его с помощью
public class ServiceSession
{
public Dictionary<string, List<ServiceSessionType>> ServiceSessions { get; set; }
}
public class ServiceSessionType
{
public string Apn { get; set; }
}
а также
var test = JsonConvert.DeserializeObject<ServiceSession> (json);
Я получаю ноль.
Что не так? Любые идеи?
Заранее спасибо!!
Ваша модель не соответствует вашему JSON. 123123123
- это массив объектов, а не словарь. Даже если бы это был словарь (а это определенно не так), он все равно взорвался бы, потому что у вас были бы повторяющиеся ключи.
ServiceSessions
не то же самое, что serviceSession
@SamAxe 123123123
- это ключ в словаре :)
@zaitsman: о боже. совершенно неправильно это прочитал, не так ли :) Спасибо.
Несоответствие между структурой данных и строкой json. Вам нужно изменить:
public class ServiceSession
{
//ServiceSessions replaced by serviceSession
public Dictionary<string, List<ServiceSessionType>> serviceSession { get; set; }
}
Другое решение - добавить атрибут DataMember
, который сообщает имя десериализатору.
[System.Runtime.Serialization.DataContract]
public class ServiceSession
{
[System.Runtime.Serialization.DataMember(Name = "serviceSession")]
public Dictionary<string, List<ServiceSessionType>> ServiceSessions { get; set; }
}
Это имеет смысл, если вы не можете изменить класс или имя является ключевым словом в C#.
Структура данных C# не соответствует структуре данных json. Либо измените способ составления json, либо измените структуру классов в C#.