0

Я получаю json, в котором значение все время меняется, это значение я не могу обойти.

Json:

{
  "country": {
    "20613": {
      "cases": [
        {
          "caseType": 1,
          "name": "ОАЭ"
        },
        {
          "caseType": 2,
          "name": "ОАЭ"
        },
        {
          "caseType": 3,
          "name": "ОАЭ"
        },
        {
          "caseType": 4,
          "name": "ОАЭ"
        },
        {
          "caseType": 5,
          "name": "ОАЭ"
        },
        {
          "caseType": 6,
          "name": "ОАЭ"
        }
      ],
      "preposition": "в"
    }
  },
  "region": {},
  "city": {
    "274286": {
      "cases": [
        {
          "caseType": 1,
          "name": "Москва"
        },
        {
          "caseType": 2,
          "name": "Москвы"
        },
        {
          "caseType": 3,
          "name": "Москве"
        },
        {
          "caseType": 4,
          "name": "Москву"
        },
        {
          "caseType": 5,
          "name": "Москвой"
        },
        {
          "caseType": 6,
          "name": "Москве"
        }
      ]
    }
  }
}

20613 будет менятся, как мне объявить так, чтобы он брал значение из основного класса.

Пример:

public partial class Cou
{
    [JsonProperty("country")]
    public Countryse Countryse { get; set; }
}

public partial class Countryse
{
    [JsonProperty("caseType")]
    public long CaseType { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }
}

Я не могу никак константу сделать в NameCountry() классе.

Как я могу это обойти?

var countryjs = JsonConvert.DeserializeObject<Dictionary<string, Countryse>>(bca);
var data = countryjs[NameCountry()].Name;
Console.WriteLine(data);

Ошибка:

The given key '20613' was not present in the dictionary.
  • Это не дубликат, там я вообще не нашел подобного, там нету динамичного json. У меня класс создается с определенным названием, а это название будет менятся все время. Я нашел выход в том, что я могу отловить это значение, но класс json не хочет его принимать, т.к не константа. Мне нужно каждый раз давать какое будет название для public The20613 The20613 { get; set; } – Prince Tag May 14 '20 at 12:44
  • Так у вас не класс с названием должен быть, а словарь, где ключом является это самое название, в вашем случае 20613 - это ключ. – EvgeniyZ May 14 '20 at 12:49
  • @ Я понял как делать дальше, но не могу класс составить, можете помочь, вопрос отредактировал – Prince Tag May 14 '20 at 16:01
  • Я не вижу ваш JSON, как я могу вам помочь? – EvgeniyZ May 14 '20 at 16:28
  • @EvgeniyZ забыл добавить – Prince Tag May 14 '20 at 19:47
  • 1
    Ну давайте посмотрим на вашу JSON структуру, что мы видим тут? А то, что в главном узле у нас 3 объекта (country, region, city), то есть у вас должен быть класс, например Root, который внутри содержит 3 свойства public Dictionary<int, Case> Country {get;set;} (и по аналогии) и в этот класс уже должна идти десериализация, а вы пытаетесь засунуть сразу в Dictionary<string, Countryse>. Дальше ужеCaseсодержит в себе массив неких объектов, под названиемCasesи некое свойствоPreposition`. В итоге получаем такое. – EvgeniyZ May 15 '20 at 00:12
  • @EvgeniyZ Спасибо за подробное объяснение – Prince Tag May 15 '20 at 13:19

0 Answers0