Десериализовать вложенный словарь - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы преобразовать документ YAML в граф объектов , используя YamlDo tNet десериализатор . Ниже приведен пример файла YAML.

desks:
  - A5
  - A6
  - A7
  - A8
  - ...
employees:
  - E00
  - E10
  - E20
  - ...
schedule:
  0:
    E00: A0
    E10: A1
    E100: A10
    E20: A2
    E30: A3
    E40: A4
    E50: A5
    E60: B0
    E70: F3
    E80: A8
    E90: A9
  1:
    E00: A0
    E10: A1
    E100: A10
    E20: A2
    E30: A3
    E40: A4
    E50: A5
    E60: B0
    E70: F3
    E80: A8
    E90: A9
  ...

Следуя руководству, которое я связал ранее, я создал Планировщик , инкапсулирующий все узлы моего документа YAML для приведения с помощью

var deserializer = new DeserializerBuilder()
                .WithNamingConvention(CamelCaseNamingConvention.Instance)
                .Build();

var order = deserializer.Deserialize<Scheduler>(input);
public class Scheduler
{
    public List<string> desks { get; set; }
    public List<string> employees { get; set; }

}

Однако я не знаю, как представить узел schedule, который является вложенным словарем переменной длины.

  • Внешний словарь отображает целое число во внутренний словарь.
  • Внутренние словари отображают строку в строку.

Какую структуру данных я могу использовать в C# для представления такой структуры YAML?

1 Ответ

2 голосов
/ 04 мая 2020

У меня все получилось, но мне было бы любопытно, если есть лучший способ. У меня был опыт JSON десериализации, но у меня не было большого опыта десериализации YAML.

public class Scheduler
{
    public List<string> desks { get; set; }
    public List<string> employees { get; set; }
    public IDictionary<int, IDictionary<string,string>> schedule { get; set; }
}
...