2017-08-30 19 views
0

yaml.dotnetを使ってオブジェクトのリストを逆シリアル化したいYamlオブジェクトリスト

私のYAMLとソースコードは以下の通りです。

レッスンがレッスンオブジェクトの一部ではないというエラーが表示されます。 YAMLに

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

クラス:

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

YAML:だから、何らかの理由コンパイラは、 "Lessonは" クラス

コードのプロパティであることを期待していますマップする必要があります

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があなたのYAMLのルート要素がシーケンスことを期待してあなたは、あなたがList<YamlLesson>にデシリアライズしたいことYamlDotNetを伝えることです。しかし、YAMLのルート要素はというマッピングです:1つのキー、Lessonsとそれに対応する値、一連のレッスンがあります。

このYAMLが正しくこのクラスにデシリアライズすることができます:あなたがリストに直接デシリアライズしたい場合

しかし、ちょうど

- ShortKey: "M/A/L" 
    Type: Static 
    Items: ["M","A","M","L"] 
- ShortKey: "der/die/datas" 
    Type: "random" 
    Items: ["der","die","das"] 
するルートマッピングをドロップすると、あなたのYAMLを変更
関連する問題