Deserializing YAML using YamlDotNet when the root node of each object is named using it's ID?

user310988 picture user310988 · Dec 14, 2016 · Viewed 11.8k times · Source

I'm using C# and I have a YAML file I want to deserialize.

I've looked at using YamlDotNet, and it looks like it's pretty decent, but I can't find how to handle this situation.

The YAML objects take the following format:

1:
    id: 1
    name: foo
2:
    id: 2
    name: foo

Ideally this would be:

(EDIT: Changed ideal format as per Anthon's comment.)

- id: 1
  name: foo
- id: 2
  name: foo

But it's not ... oh well.

I can of course revert to doing everything much more manually, by looping over each node and manually creating the data object instances, but it seems like there should still be a way to have the ease of use from YamlDotNet while handling this annoying data structure.

I'm open to suggestions for other YAML parsing libraries in .net.

Answer

user310988 picture user310988 · Dec 14, 2016

I found the answer in another SO question: Seeking guidance reading .yaml files with C#

By deserializing to Dictionary<int, Item> I can successfully handle this data structure.

deserializer.Deserialize<Dictionary<int, Item>>(textReader);