我想解析以下 YAML
urls:
who: /fr-fr/who-we-are
test: /fr-fr/test
targetDirectory: d:\temp
变成以下结构:
public class UserConfig
{
public Dictionary<string, string> Urls { get; set; }
public string TargetDirectory { get; set; }
}
我尝试将其序列化为:
var deserializer = new DeserializerBuilder()
.WithNamingConvention(new CamelCaseNamingConvention())
.Build();
但我总是收到以下错误: (Line: 2, Col: 1, Idx: 8) - (Line: 2, Col: 2, Idx: 9): Expected 'MappingStart', got 'SequenceStart' (at Line: 2,颜色:1,IDX:8)。
这个库能够支持键值映射吗?如果是的话我该怎么做?
编辑:
这个 YAML 给了我完全相同的结果:
urls:
- who: /fr-fr/qui-sommes-nous?sc_site=schmidttest
- fabricantfrancais: /fr-fr/avantages-cuisinella/1er-fabricant-francais
targetDirectory: d:\temp
问候, 本杰明 V.
您好,我收到了 github 管理员的回复:https://github.com/aaubry/YamlDotNet/issues/328
那是因为您的 YAML 文档是一系列映射,而不是一个映射。这将映射到
。如果您可以控制 YAML 文档的结构,您应该将其更改为:List<Dictionary<string, string>>
网址: 谁:/fr-fr/who-we-are 测试:/fr-fr/test
目标目录:d:emp
否则,您将需要实现一个实现的类并将该类型用作 Urls 属性。ICollection<Dictionary<string, string>>
谢谢您的帮助!