Как десериализовать список пары ключ / значение в файле yaml с помощью YamlDotNet - PullRequest
0 голосов
/ 30 января 2019

Привет! Я использую 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 Ответ

0 голосов
/ 30 января 2019

Каждая пара ключ-значение представляет собой отображение с одной записью в YAML (для отдельных пар ключ-значение не существует отдельной структуры).Следовательно, parameters должно быть List> `.

Если вы хотите просто иметь возможность запрашивать значение каждого ключа, вы должны отбросить последовательность и сделать из нее одно сопоставление YAML:

parameters:
  firstKey: value1
  secondKey: value2

Это приведет к десериализации до Dictionary<string,string>, который вы затем сможете запросить о значениях.Однако порядок параметров теряется.

Если вам нужно сохранить порядок параметров, вам нужно сохранить последовательность YAML, содержащую пары ключ-значение, и десериализовать в OrderedDictionary<string,string> - afaik YamlDotNetне поддерживает это напрямую, но вы можете использовать исходную структуру (List<Dictionary<string,string>>) и создать из нее OrderedDictionary.

...