Не получается десериализовать JSON строку

270
29 июня 2017, 01:09

Вообщем есть JSON строка:

{
    "38938719": [
        {
            "tier": "DIAMOND",
            "queue": "RANKED_SOLO_5x5",
            "name": "Varus's Army",
            "entries": [
                {
                    "isFreshBlood": false,
                    "division": "V",
                    "isVeteran": false,
                    "wins": 73,
                    "losses": 68,
                    "playerOrTeamId": "38938719",
                    "playerOrTeamName": "ShironekoSistine",
                    "isInactive": false,
                    "isHotStreak": true,
                    "leaguePoints": 37
                }
            ]
        },
        {
            "tier": "DIAMOND",
            "queue": "RANKED_FLEX_SR",
            "name": "Sejuani's Highwaymen",
            "entries": [
                {
                    "isFreshBlood": false,
                    "division": "III",
                    "isVeteran": false,
                    "wins": 38,
                    "losses": 26,
                    "playerOrTeamId": "38938719",
                    "playerOrTeamName": "ShironekoSistine",
                    "isInactive": false,
                    "isHotStreak": false,
                    "leaguePoints": 3
                }
            ]
        }
    ]
}

И я создал классы для ее десириализации

 public class Entry
    {
        public string playerOrTeamId { get; set; }
        public string playerOrTeamName { get; set; }
        public string division { get; set; }
        public int leaguePoints { get; set; }
        public int wins { get; set; }
        public int losses { get; set; }
        public bool isHotStreak { get; set; }
        public bool isVeteran { get; set; }
        public bool isFreshBlood { get; set; }
        public bool isInactive { get; set; }
    }
    public class __invalid_type__38938719
    {
        public string name { get; set; }
        public string tier { get; set; }
        public string queue { get; set; }
        public List<Entry> entries { get; set; }
    }
    public class RootObject
    {
        public List<__invalid_type__38938719> __invalid_name__38938719 { get; set; }
    }

Делал методом RootObject summonerInfo = JsonConvert.DeserializeObject<RootObject>(answer); где answer - полученная JSON строка в формате string но ошибка в том, вечно получается что даже __invalid_name__38938719 Принимает значение null во время работы программы, ну и соответственно все остальные значения тоже. Что я делаю не так? уже целый день сижу над этим...

Answer 1

С помощью чего вы генерили модели? Что это __invalid_type__38938719? Больше не используйте эту шляпу.

Для представления ассоциативных массивов используется класс Dictionary<TKey, TValue>.

Использование:

var resultObject = JsonConvert.DeserializeObject<Dictionary<int, List<Element>>>(jsonString);

Тестить!

Ваши модели:

public class Entry
{
    public string PlayerOrTeamId { get; set; }
    public string PlayerOrTeamName { get; set; }
    public string Division { get; set; }
    public int LeaguePoints { get; set; }
    public int Wins { get; set; }
    public int Losses { get; set; }
    public bool IsHotStreak { get; set; }
    public bool IsVeteran { get; set; }
    public bool IsFreshBlood { get; set; }
    public bool IsInactive { get; set; }
}
public class Element
{
    public string Name { get; set; }
    public string Tier { get; set; }
    public string Queue { get; set; }
    public List<Entry> Entries { get; set; }
}
READ ALSO
Хелперы ASP.NET RAZOR MVC5 для использования с using

Хелперы ASP.NET RAZOR MVC5 для использования с using

В ASPNET RAZOR MVC5 существует такой замечательный хелпер как

300
MVP pattern+async+update UI

MVP pattern+async+update UI

Есть некая задача, по которой надо обработать данные в массиве из большого количества элементовДанные, это кадастровые номера, по которым...

464
Работа с XML средствами C#

Работа с XML средствами C#

Имееться xml файл, нужно из этого файла выцедить и записать в лист, проблема в том что у меня получаеться выцедить только 1 экземпляр

252
ComboBox в grid KENDO winform, загрузка и добавление

ComboBox в grid KENDO winform, загрузка и добавление

Grid загружается через BindingSource, в grid включено добавление, удаление, редактированиеКак сделать так что бы в первом столбце находился combobox и при...

199