Как проанализировать объект с помощью словаря из файла yaml?C#

Место общения программистов C#
Ответить
Anonymous
 Как проанализировать объект с помощью словаря из файла yaml?

Сообщение Anonymous »

Вот общая структура:

Код: Выделить всё

public struct Choice
{
public string result;
public string nextBranch;
}

public struct Branch
{
public Dictionary choices;
}

public class ChoiceTree
{
public Dictionary branches;
// some other properties

// some methods
}
И сейчас я вручную заполняю свой объект ChoiceTree текстовыми полями, потому что это проект WPF. Вместо этого я хотел бы проанализировать их из файла YAML. Я сделал это как отправную точку. Понятия не имею, правильно ли он настроен, но я хотя бы воспользовался онлайн-проверкой, чтобы убедиться в правильности синтаксиса:

Код: Выделить всё

branches:
- Key: "main1"
Value:
choices:
- Key: "few minutes"
Value:
result: "S"
nextBranch: "refuse"
- Key: "hold on"
Value:
result: "D"
nextBranch: "refuse"
- Key: "of course"
Value:
result: "LS"
nextBranch: "accept"
- Key: "fine"
Value:
result: "HD"
nextBranch: "accept"
- Key: "refuse"
Value:
choices:
- Key: "reluctant"
Value:
result: "HH"
nextBranch: "accept"
- Key: "happily"
Value:
result: "L"
nextBranch: "accept"
# more branches below...
Я думаю, что самое близкое, что мне удалось сделать, — это следовать этому примеру. Под «ближайшим» я подразумеваю, по крайней мере, компилируемый ниже код. Но это не работает, и я понятия не имею, почему.

Код: Выделить всё

public class YamlChoiceTreeeParser
{
public YamlChoiceTreeeParser(string filePath)
{
if (!File.Exists(filePath))
{
throw new Exception("YAML file not found");
}
using (StreamReader sr = new StreamReader(filePath))
{
var deserializer = new DeserializerBuilder()
.Build();
var choiceTree = deserializer.Deserialize(sr);
}
}
}
Я попробовал кучу разных вариантов файла yaml и кучу разных примеров, но не могу даже перейти к последней строке без исключения. (в приведенном выше коде я получаю исключение: «Ожидается «MappingStart», получено «SequenceStart»»

Подробнее здесь: https://stackoverflow.com/questions/798 ... -yaml-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»