public static void Main()
var ignoreNulls = new JsonSerializerSettings {
NullValueHandling = NullValueHandling.Ignore,
Try(() => Console.WriteLine(JsonConvert.DeserializeObject<DateTime?>("null")));
ignoreNulls.Converters.Add(new AllowNullConverter());
Try(() => Console.WriteLine(JsonConvert.DeserializeObject<DateTime>("null", ignoreNulls)));
private static void Try(Action action) {
Console.WriteLine(ex.ToString());
class AllowNullConverter : JsonConverter
public override bool CanConvert(Type objectType)
return objectType == typeof(DateTime);
public override bool CanRead
public override bool CanWrite
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
if (reader.TokenType == JsonToken.Null)
return default(DateTime);
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotSupportedException();