CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using Newtonsoft.Json;
public class Program
{
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}");
}
Console.WriteLine();
}
}
public class DataSettings
{
public DataSettings()
{
Instances = new List<Instance>();
}
public List<Instance> Instances { get; set; }
[OnDeserialized]
internal void SetDefaultValuesAfterDeserialization(StreamingContext context)
{
if (Instances == null || !Instances.Any())
{
Instances = new List<Instance>
{
new Instance { Name = "XYZ", MyProperty = 11 }
};
}
}
}
public class Instance
{
public string Name { get; set; }
public int MyProperty { get; set; }
}