Десериализация DateOnly в json-теле запроса.
Поддержку DateOnly и TimeOnly добавили в System.Text.Json в .NET 7 (
https://github.com/dotnet/runtime/issues/53539)
Реализацию можно посмотреть в
DateOnlyConverterТак как поддерживается только дата в формате
yyyy-MM-dd
, то проверять мы только её и будем:
var jsonOnlyDate = "{ \"Date\":\"2024-02-08\"}";
Console.WriteLine($"{RuntimeInformation.OSDescription}");
Console.WriteLine($"Local TimeZone: {TimeZoneInfo.Local}");
var resultJsonOnlyDate = JsonSerializer.Deserialize<DateOnlyModel>(jsonOnlyDate);
Console.WriteLine(GetDateOnlyString(resultJsonOnlyDate.Date, jsonOnlyDate));
string GetDateOnlyString(DateOnly date, string json) => $"{date} ({json})";
public class DateOnlyModel
{
public DateOnly Date { get; set; }
}
И результат выполнения:
Microsoft Windows 10.0.22621
Local TimeZone: (UTC+03:00) Москва, Санкт-Петербург
08.02.2024 ({ "Date":"2024-02-08"})
Тут особо ничего не прокомментируешь - максимально прозрачное и ожидаемое поведение, единственной проблемой может быть необходимость использования .NET 7.