Reputation:
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 text I am working with has the following format:
1:
id: 1
name: foo
2:
id: 2
name: foo
I wish it looked like this instead, but it doesn't:
- id: 1
name: foo
- id: 2
name: foo
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.
Upvotes: 5
Views: 19349
Reputation: 12469
If you use a list, as your edit, you can deserialize that file easily using code similar to this:
class MyObject {
public int Id { get; set; }
public string Name { get; set; }
}
var deserializer = new DeserializerBuilder()
.WithNamingConvention(new CamelCaseNamingConvention())
.Build();
var result = deserializer.Deserialize<List<MyObject>>(File.OpenText("myfile.yml"));
Note: I am typing on a phone and can't test the code. It should be mostly correct but I haven't tested it.
Upvotes: 3
Reputation:
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);
Upvotes: 7