public static void Main()
string json = @"{ ""TransformMatrix"" : ""{ ""Foo"" : 1 }"" }";
Item item = Item.FromJSON(json);
Console.WriteLine(item.TransformMatrix.Foo);
public TransformMatrix TransformMatrix { get; set; }
public static Item FromJSON(string json)
JsonConverter[] converters = { new LineConverter(), new TransformMatrixConverter() };
return JsonConvert.DeserializeObject<Item>(json, new JsonSerializerSettings()
public struct TransformMatrix
public int Foo { get; set; }
public class TransformMatrixConverter : JsonConverter
public override bool CanConvert(Type objectType)
Console.WriteLine("CanConvert was called for " + objectType.Name);
return typeof(TransformMatrix).IsAssignableFrom(objectType);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
throw new NotImplementedException("TransformMatrixConverter: ReadJson is not implemented");
public override bool CanWrite
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException("TransformMatrixConverter: WriteJson is not implemented");
public class LineConverter : JsonConverter
public override bool CanConvert(Type objectType)
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
throw new NotImplementedException("LineConverter: ReadJson is not implemented");
public override bool CanWrite
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException("LineConverter: WriteJson is not implemented");