using System.Collections.Generic;
using System.Runtime.Serialization;
public static void Main()
Console.WriteLine("--- Instances list is not in JSON ---");
DeserializeAndDump("{}");
Console.WriteLine("--- Instances list is null ---");
DeserializeAndDump(@"{ ""Instances"": null }");
Console.WriteLine("--- Instances list is empty ---");
DeserializeAndDump(@"{ ""Instances"": [] }");
Console.WriteLine("--- Instances list has an item ---");
DeserializeAndDump(@"{ ""Instances"": [ { ""Name"": ""ABC"", ""MyProperty"": 4 } ] }");
static void DeserializeAndDump(string json)
var dataSettings = JsonConvert.DeserializeObject<DataSettings>(json);
foreach (var instance in dataSettings.Instances)
Console.WriteLine($"Name: {instance.Name}, MyProperty: {instance.MyProperty}");
public class DataSettings
Instances = new List<Instance>();
public List<Instance> Instances { get; set; }
internal void SetDefaultValuesAfterDeserialization(StreamingContext context)
if (Instances == null || !Instances.Any())
Instances = new List<Instance>
new Instance { Name = "XYZ", MyProperty = 11 }
public string Name { get; set; }
public int MyProperty { get; set; }