У нас есть служба API, которую мы обновляем, и мы преобразовали некоторые объекты даты из строк в объекты DateTime. В старом коде мы тестировали строку, если она будет анализировать время данных или нет. Если это была неверно отформатированная строка, она присваивает DateTime.Min и продолжает работу. Теперь клиенты отправляют плохие даты, и это взрывается, поскольку сериализация происходит вне нашего кода (MVC Controller). Я пытаюсь найти способ, которым при сериализации объекта DateTime, если он не может его проанализировать, он просто возвращает DateTime.Min вместо взрыва вызова.
Вот ответ от API Call.
{
"date": [
"Could not convert string to DateTime: Invalid Date. Path 'date', line 3, position 24."
]
}
===== ОБНОВЛЕНИЕ =====
Я наконец-то нашел где-то, что рекомендовал пользовательский JsonConverter. Я наконец-то получил что-то, что работает, но там мало что есть, поэтому, если есть что-то, что я мог бы сделать лучше, я весь слух.
Пользовательский конвертер
public class DateConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
try
{
return DateTime.Parse(reader.Value.ToString());
}
catch (Exception ex)
{
return DateTime.MinValue;
}
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime);
}
}
Класс DTO
public class Request
{
[JsonConverter(typeof(SafeDateConverter))]
public DateTime Date { get; set; }
}