gir*_*tri 4 yaml deserialization yamldotnet
您好,我正在使用 YamlDotNet 反序列化 yml 文件,如下所示:
name: element name
description: something to describe
parameters:
- firstKey: value1
- secondKey: value2
Run Code Online (Sandbox Code Playgroud)
这是用于反序列化的 .net 类:
class MyElement
{
public string name { get; set; }
public string description { get; set; }
public ??? parameters { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我可以使用哪种类型来正确反序列化参数属性以列出键/值对数组?接下来,使用密钥检索值的更好方法是什么?
这是要反序列化的 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);
Run Code Online (Sandbox Code Playgroud)
提前致谢
每个键值对都是YAML 中一个条目的映射(单个键值对没有单独的结构)。因此,parameters应该是List<Dictionary<string,string>>.
如果您只想查询每个键的值,您应该删除该序列并将其设为单个 YAML 映射:
\nparameters:\n firstKey: value1\n secondKey: value2\nRun Code Online (Sandbox Code Playgroud)\n这将反序列化,Dictionary<string,string>然后您可以查询这些值。但是,参数的顺序会丢失。
如果需要保留参数的顺序,则需要保留包含键值对的 YAML 序列并反序列化为OrderedDictionary<string,string>\xe2\x80\x93 afaik YamlDotNet 不直接支持此操作,但可以使用原始结构 ( List<Dictionary<string,string>>)并从中建立一个 OrderedDictionary 。
| 归档时间: |
|
| 查看次数: |
16377 次 |
| 最近记录: |