Десериализация свойств JSON в список C#

#c# #json-deserialization

Вопрос:

Я бы хотел десериализовать строку JSON для классов C#. Соответствующий JSON является:

 {  "description": "...",  "toppings": {  "_09": {  "id": 09,  "name": "name"  },  "_10": {  "id": 10,  "name": "name"  }  } }  

Я могу легко десериализовать его в эти классы, используя JsonConvert

 public class Root{  public string description { get; set; }  public Toppings toppings { get; set; } }  public class Toppings{  public _09 _09;  public _10 _10; }  public class _09{  public int id { get; set; }  public string name { get; set; } }  public class _10{  public int id { get; set; }  public string name { get; set; } }  

Классы _09 и _10 имеют одинаковую структуру. В реальной строке JSON есть еще сотни таких классов. В одном JSON их всего 10, в то время как в другом-500 случайным образом. Вот почему я не могу использовать классы выше для десериализации, так как я не знаю названия свойств «Начинок».

Я хотел бы десериализовать _09, _10 и т. Д. В список, А не в свойства, поскольку они имеют одинаковую структуру. Поэтому я хотел бы десериализовать JSON на эти два класса, так как значение JSON таково:

 public class Root{  public string description { get; set; }  public Listlt;Toppinggt; toppings { get; set; } }  public class Topping{  public int id { get; set; }  public string name { get; set; } }  

Наверное, мне нужен какой-то пользовательский десериализатор, но я не знаю, как это сделать. Я использую JsonConvert от Newtonsoft, но не имеет значения, какой десериализатор вы предлагаете для этого.

Комментарии:

1. Самое простое, что вы можете сделать, — это просто public class Root { public Dictionarylt;string, Toppinggt; Toppings { get; set; } } . Если вы хотите, вы можете преобразовать этот словарь в список (или просто использовать Toppings.Values )

2. Превосходно! Это работает, спасибо!