2017-08-30 66 views
0

我想反序列化對象的列表與yaml.dotnetYAML對象列表

您可以在下面看到我的YAML和源代碼。

我得到錯誤,該課不是我的課程對象的一部分。因此,對於任何原因編譯器期待的是 「Lesson」 是對類的屬性

代碼:

var deserializer = new Deserializer(); 
var items = deserializer.Deserialize<List<YamlLesson>>(yaml); 

YAML:

Lessons: 
    - ShortKey: "M/A/L" 
    Type: Static 
    Items: ["M","A","M","L"] 
    - ShortKey: "der/die/datas" 
    Type: "random" 
    Items: ["der","die","das"] 

級到的YAML應映射

public sealed class YamlLesson 
    { 
     public string ShortKey { get; set; } 

     public string Type { get; set; } 

     public List<string> Items { get; set; } 
    } 
} 

異常

YamlDotNet.Core.YamlException:「(行:1,柱:1,IDX:0) - (行:1, 山口:1,IDX:0):預期'SequenceStart',得到'MappingStart'(在 行:1,Col:1,Idx:0)。'

回答

1

好了,錯誤的是你告訴YamlDotNet要反序列化到一個List<YamlLesson>,所以YamlDotNet期待您的YAML的根元素是一個序列。但是,您的YAML的根元素是映射:它有一個鍵,Lessons和相應的值,即一系列課程。

這個YAML可以適當地反序列化到這個類:

但是,如果你想直接反序列化到列表中,只是下降的根源映射和改變你的YAML是

- ShortKey: "M/A/L" 
    Type: Static 
    Items: ["M","A","M","L"] 
- ShortKey: "der/die/datas" 
    Type: "random" 
    Items: ["der","die","das"]