Десериализовать словарь JSON в C # - PullRequest
0 голосов
/ 02 мая 2018

Я получаю этот 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);

Я получаю ноль.

Что не так? есть идеи?

Заранее спасибо !!

1 Ответ

0 голосов
/ 02 мая 2018

Существует несоответствие между структурой данных и строкой 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 #.

...