Удаление компонента времени из ответа JSON DateTime в веб-API .Net Core 2.1

У меня есть веб-API ASP .Net Core 2.1, который возвращает DateTime в одном из действий своего контроллера. JSON выглядит так:

1965-02-03T00:00:00

Я думаю, это ISO 8601 ...

Поскольку на самом деле это дата рождения, мне бы хотелось, чтобы она не содержала временной составляющей. .Net не имеет типа данных только Date (как и моя базовая база данных MySQL), поэтому я должен использовать тип DateTime. Есть ли способ отформатировать данные JSON, которые поступают к потребляющему клиенту, в ГГГГ-ММ-ДД?

Действие контроллера очень простое:

    // GET: api/Persons
    [HttpGet]
    public IEnumerable<Person> GetPerson()
    {
        return _context.Persons;
    }

И модель Person тоже очень проста:

public partial class Person
{
    public int Id { get; set; }
    public string Forenames { get; set; }
    public string Surname { get; set; }
    public string Title { get; set; }
    public string IdNumber { get; set; }
    public DateTime? DateOfBirth { get; set; }
}
Этот может помочь. Это старая школа ASP.NET, но принципы те же, учитывая, что процесс сериализации ASP.NET Core использует JSON.NET.
Kirk Larkin 31.07.2018 13:59
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
2
1
1 304
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для настройки Json Serialize в Asp.Net Core вы можете использовать AddJsonOptions с JsonSerializerSettings.

    //
    // Summary:
    //     Gets or sets how System.DateTime and System.DateTimeOffset values are formatted
    //     when writing JSON text, and the expected date format when reading JSON text.
    //     The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK".
    public string DateFormatString { get; set; }
        services.AddMvc()
        .AddJsonOptions(opt => {
            opt.SerializerSettings.DateFormatString = "yyyy-MM-dd";
        })
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

Другие вопросы по теме