2

我正在使用 C#,并且我有一个要反序列化的 YAML 文件。

我看过使用 YamlDotNet,它看起来相当不错,但我找不到如何处理这种情况。

我正在使用的 YAML 文本具有以下格式:

1:
    id: 1
    name: foo
2:
    id: 2
    name: foo

我希望它看起来像这样,但事实并非如此:

- id: 1
  name: foo
- id: 2
  name: foo

我当然可以通过循环遍历每个节点并手动创建数据对象实例来恢复手动操作,但似乎仍然应该有一种方法可以在处理这种烦人的数据结构时从 YamlDotNet 轻松使用。

我对 .NET 中其他 YAML 解析库的建议持开放态度。

4

2 回答 2

4

我在另一个 SO 问题中找到了答案:Seeking guide reading .yaml files with C#

通过反序列化,Dictionary<int, Item>我可以成功处理这个数据结构。

deserializer.Deserialize<Dictionary<int, Item>>(textReader);
于 2016-12-14T16:09:03.710 回答
3

如果您使用列表作为您的编辑,您可以使用类似以下的代码轻松反序列化该文件:

class MyObject {
    public int Id { get; set; }
    public string Name { get; set; }
}

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

var result = deserializer.Deserialize<List<MyObject>>(File.OpenText("myfile.yml"));

注意:我在手机上打字,无法测试代码。它应该是正确的,但我没有测试过。

于 2016-12-14T22:10:40.897 回答