public static void Main()
var json = JsonConvert.SerializeObject(person, Formatting.Indented);
[JsonConverter(typeof(CustomConverter))]
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public class CustomConverter : JsonConverter
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
if (value == null) return;
writer.WriteStartObject();
writer.WritePropertyName(value.GetType().Name);
writer.WriteStartArray();
var properties = value.GetType().GetProperties();
foreach (var property in properties)
writer.WriteValue(value.GetType().GetProperty(property.Name).GetValue(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 (Person);