public static void Main()
var foo = new Foo{ X = 0 };
var foo2 = new Foo2{ X = 0 };
var bar = new Bar { X = 0 };
Console.WriteLine(JsonConvert.SerializeObject(foo));
Console.WriteLine(JsonConvert.SerializeObject(foo2));
Console.WriteLine(JsonConvert.SerializeObject(bar));
[JsonConverter(typeof(ZeroToNullConverter))]
public int? X { get; set; }
new public int? X { get; set; }
public class ZeroToNullConverter : JsonConverter
public override bool CanConvert(Type objectType)
return objectType == typeof(int?);
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
int? number = (int?)value;
writer.WriteValue(number);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
throw new NotImplementedException();
public override bool CanRead