反序列化嵌套字典

时间:2020-05-04 03:48:12

标签: c# .net yaml yamldotnet

我想将YAML文档转换为对象图using YamlDotNet deserializer。以下是yhe 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
  ...

按照我之前链接的指南,我创建了一个 Scheduler ,封装了要投射的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 个答案:

答案 0 :(得分:2)

我已经开始工作了,但是我想知道是否有更好的方法。我对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; }
}