【问题标题】:Deserialize YAML反序列化 YAML
【发布时间】:2020-03-03 14:33:21
【问题描述】:

我正在尝试,我认为,一个非常简单的操作,但我无法解决我遇到的异常。基本上它是 YamlDotNet 中 Samples.DeserializeObjectGraph 示例的副本:https://dotnetfiddle.net/eImc2H

[System.Runtime.Serialization.SerializationException: 属性 在类型上找不到“continent_id” 'YamlDotNet.Samples.DeserializeObjectGraph+Country'。]

我已尝试将国家/地区的属性重命名为continent_id,并将 YAML 重命名为continentID,但仍然出现错误。所以它不仅仅是忽略了我的 YamlMember 行,它似乎没有找到 Country 类什么的。

如果我删除大洲中的国家/地区数组,它是否被解析得很好。

有人可以解释一下我在这里做错了什么吗?

【问题讨论】:

  • 有一个错字[YamlMember(Alias = "contient_id",,但修复它并没有解决问题:(
  • 感谢@Fildor,修正了错字。但就像你说的,并不能解决问题
  • 好的,所以我设法解决了这个问题:由于我的 YAML 文件是蛇形案例,我应该使用 UnderscoredNamingConvention,但我真的不明白为什么它不能像现在这样工作。所以,不回答我自己的问题,而是希望有更多见解的人可以解释为什么它是错误的。

标签: c# yamldotnet


【解决方案1】:

您错过了您所在国家/地区类别中的currency 属性。将此添加到您的国家/地区类。

[YamlMember(Alias = "currency", ApplyNamingConventions = false)]
public string currency { get; set; }

它适用于您当前的实现并返回此答案。

Africa
     * Algeria
Asia
     * Afghanistan
Europe
     * Albania
     * Andorra

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2020-11-06
    • 1970-01-01
    • 2013-08-21
    • 2015-03-16
    • 2017-11-02
    • 2016-09-16
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多