如何使用 YamlDotNet 反序列化 yaml 文件中的 key/value 对列表
How to deserialize a list of key/value pair in yaml file with YamlDotNet
您好,我正在使用 YamlDotNet 反序列化 yml 文件,如下所示:
name: element name
description: something to describe
parameters:
- firstKey: value1
- secondKey: value2
这是用于反序列化的 .net class:
class MyElement
{
public string name { get; set; }
public string description { get; set; }
public ??? parameters { get; set; }
}
我可以使用哪种类型来正确反序列化参数 属性 以列出 key/value 对的数组?
接下来,使用密钥检索值的更好方法是什么?
这是要反序列化的 C# 代码:
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
...
var deser = new DeserializerBuilder().WithNamingConvention(new CamelCaseNamingConvention()).Build();
var reader = File.OpenText(pathToFileYml);
var data = deser.Deserialize<MyElement>(reader);
提前致谢
每个键值对都是一个映射,在 YAML 中有一个条目(单个键值对没有单独的结构)。因此,parameters
应该是 List<Dictionary<string,string>>
.
如果您想简单地查询每个键的值,您应该删除序列并将其设为单个 YAML 映射:
parameters:
firstKey: value1
secondKey: value2
这将反序列化为 Dictionary<string,string>
,然后您可以查询这些值。但是,参数的顺序丢失了。
如果需要保留参数的顺序,需要保留包含键值对的YAML序列,反序列化成OrderedDictionary<string,string>
– afaik YamlDotNet不直接支持这个,但是你可以使用原始结构 (List<Dictionary<string,string>>
) 并从中构建一个 OrderedDictionary。
您好,我正在使用 YamlDotNet 反序列化 yml 文件,如下所示:
name: element name
description: something to describe
parameters:
- firstKey: value1
- secondKey: value2
这是用于反序列化的 .net class:
class MyElement
{
public string name { get; set; }
public string description { get; set; }
public ??? parameters { get; set; }
}
我可以使用哪种类型来正确反序列化参数 属性 以列出 key/value 对的数组? 接下来,使用密钥检索值的更好方法是什么?
这是要反序列化的 C# 代码:
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
...
var deser = new DeserializerBuilder().WithNamingConvention(new CamelCaseNamingConvention()).Build();
var reader = File.OpenText(pathToFileYml);
var data = deser.Deserialize<MyElement>(reader);
提前致谢
每个键值对都是一个映射,在 YAML 中有一个条目(单个键值对没有单独的结构)。因此,parameters
应该是 List<Dictionary<string,string>>
.
如果您想简单地查询每个键的值,您应该删除序列并将其设为单个 YAML 映射:
parameters:
firstKey: value1
secondKey: value2
这将反序列化为 Dictionary<string,string>
,然后您可以查询这些值。但是,参数的顺序丢失了。
如果需要保留参数的顺序,需要保留包含键值对的YAML序列,反序列化成OrderedDictionary<string,string>
– afaik YamlDotNet不直接支持这个,但是你可以使用原始结构 (List<Dictionary<string,string>>
) 并从中构建一个 OrderedDictionary。