using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
namespace YamlDotNet.Samples
public class DeserializeObjectGraph
var input = new StringReader(Document);
var deserializer = new DeserializerBuilder().WithNamingConvention(CamelCaseNamingConvention.Instance).Build();
var continents = deserializer.Deserialize<Continent[]>(input);
for (var i = 0; i < continents.Length; i++) {
Console.WriteLine(continents[i].name);
for (var j = 0; j < continents[i].countries.Length; j++) {
Console.WriteLine("\t * {0}",continents[i].countries[j].name);
public Country[] countries;
[YamlMember(Alias = "id", ApplyNamingConventions = false)]
public Continent continent;
[YamlMember(Alias = "id", ApplyNamingConventions = false)]
public ushort ID { get; set; }
[YamlMember(Alias = "iso_alpha_2", ApplyNamingConventions = false)]
public string isoAlpha2 { get; set; }
[YamlMember(Alias = "iso_alpha_3", ApplyNamingConventions = false)]
public string isoAlpha3 { get; set; }
[YamlMember(Alias = "currency_name", ApplyNamingConventions = false)]
public string currencyName { get; set; }
[YamlMember(Alias = "land_area", ApplyNamingConventions = false)]
public uint landArea { get; set; }
[YamlMember(Alias = "continent_id", ApplyNamingConventions = false)]
public uint continentID { get; set; }
private const string Document = @"---