#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. Превосходно! Это работает, спасибо!