YamlDotNet - 解析字典中的属性

问题描述 投票:0回答:1

我想解析以下 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.

c# yaml yamldotnet
1个回答
1
投票

您好,我收到了 github 管理员的回复:https://github.com/aaubry/YamlDotNet/issues/328

那是因为您的 YAML 文档是一系列映射,而不是一个映射。这将映射到

List<Dictionary<string, string>>
。如果您可以控制 YAML 文档的结构,您应该将其更改为:

网址: 谁:/fr-fr/who-we-are 测试:/fr-fr/test

目标目录:d:emp
否则,您将需要实现一个实现

ICollection<Dictionary<string, string>>
的类并将该类型用作 Urls 属性。

谢谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.