Как десериализовать список пары ключ / значение в файле yaml с помощью YamlDotNet
Привет, я использую YamlDotNet для десериализации файла yml следующим образом:
name: element name
description: something to describe
parameters:
- firstKey: value1
- secondKey: value2
это класс.net для десериализации:
class MyElement
{
public string name { get; set; }
public string description { get; set; }
public ??? parameters { get; set; }
}
какой тип я могу использовать для правильной десериализации свойства параметров, чтобы вывести список пары ключ / значение? И какой же способ лучше получить значение, используя ключ?
это код 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);
заранее спасибо
1 ответ
Каждая пара ключ-значение является отображением с одной записью в YAML (для отдельных пар ключ-значение не существует отдельной структуры). Следовательно, parameters
должен быть List>`.
Если вы хотите просто иметь возможность запрашивать значение каждого ключа, вы должны отбросить последовательность и сделать ее единым сопоставлением YAML:
parameters:
firstKey: value1
secondKey: value2
Это будет десериализовать Dictionary<string,string>
который вы можете запросить значения. Однако порядок параметров теряется тогда.
Если вам нужно сохранить порядок параметров, вам нужно сохранить последовательность YAML, содержащую пары ключ-значение, и десериализовать в OrderedDictionary<string,string>
- afaik YamlDotNet не поддерживает это напрямую, но вы можете использовать оригинальную структуру (List<Dictionary<string,string>>
) и создать OrderedDictionary из него.