using System.Collections.Generic;
public static void Main()
public static void Example1AsString ()
var zoopla = new ZooplaTest();
zoopla.CouncilTaxBand = "A";
var serializerSettings = new JsonSerializerSettings
Converters = new List<JsonConverter>
new CouncilTaxBandStringConverter(),
new CouncilTaxBandObjectConverter()
var json = JsonConvert.SerializeObject(zoopla, serializerSettings);
Console.WriteLine("EXAMPLE 1: string");
public static void Example2AsObject ()
var zoopla = new ZooplaTest();
zoopla.CouncilTaxBand = new CouncilTaxBandObject
var serializerSettings = new JsonSerializerSettings
Converters = new List<JsonConverter>
new CouncilTaxBandStringConverter(),
new CouncilTaxBandObjectConverter()
var json = JsonConvert.SerializeObject(zoopla, serializerSettings);
Console.WriteLine("EXAMPLE 2: object");
public object CouncilTaxBand { get; set; }
public class CouncilTaxBandStringConverter : JsonConverter
public override bool CanRead { get { return false; } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
writer.WriteValue(value);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
throw new NotImplementedException();
public override bool CanConvert(Type objectType)
return objectType == typeof(string);
public class CouncilTaxBandObjectConverter : JsonConverter
public override bool CanRead { get { return false; } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
var bandObject = (CouncilTaxBandObject)value;
writer.WriteStartObject();
if (!string.IsNullOrEmpty(bandObject.Exempt))
writer.WritePropertyName("exempt");
writer.WriteValue(bandObject.Exempt);
else if (!string.IsNullOrEmpty(bandObject.NotYetKnown))
writer.WritePropertyName("not_yet_known");
writer.WriteValue(bandObject.NotYetKnown);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
throw new NotImplementedException();
public override bool CanConvert(Type objectType)
return objectType == typeof(CouncilTaxBandObject);
public class CouncilTaxBandObject
public string Exempt { get; set; }
public string NotYetKnown { get; set; }