使用YamlDotNet失败的琐碎反序列化

时间:2015-02-15 07:51:54

标签: yamldotnet

这可能出现什么问题:

    public void Main()
    {
        var input = new StringReader(Document);

        var deserializer = new Deserializer(namingConvention: new CamelCaseNamingConvention());
        var p = deserializer.Deserialize<Person>(input);

        Console.WriteLine(p.Name);
    }

    public class Person
    {
        public string Name {get;set;}
    }

    private const string Document = @"Name: Peter";

抛出序列化异常:

Property 'Name' not found on type 'YamlDotNet.Samples.DeserializeObjectGraph+Person'

如果我首先使用Serializer序列化Person对象,也会发生同样的情况。

虽然用于反序列化的在线示例工作正常 - 但这个简单的代码却没有。我错过了什么?它必须是一个愚蠢的小细节。 (但之前我尝试过其他数据结构。)

2 个答案:

答案 0 :(得分:3)

看起来,问题在于namingConvention参数。如果我没有将它设置为CamelCaseNamingConvention的实例,那么一切都很好。

不幸的是&#34;规范&#34;示例(https://dotnetfiddle.net/HD2JXM)使用它,因此表明它很重要。

答案 1 :(得分:2)

出于任何原因,CamelCaseNamingConvention将字段中的字段转换为小写(即&#39; Name&#39; to name&#39; name&#39;)。因为字符串是&#39;名称&#39;而不是&#39; name&#39;反序列化失败。该示例使用小写,因此它有效.... 我有同样的问题......