从 .Net Core 2.1 Web JSON DateTime 响应中删除时间组件 API

Removing time component from JSON DateTime response in .Net Core 2.1 Web API

我有一个 ASP .Net Core 2.1 Web API,其中 returns 在其控制器操作之一中有一个 DateTime。 JSON 看起来像这样:

1965-02-03T00:00:00

我认为这是 ISO 8601...

因为这实际上是一个出生日期,所以我希望它不包含时间部分。 .Net 没有 Date only 数据类型(就像我的基础 MySQL 数据库有)所以我必须使用 DateTime 类型。有什么方法可以将发送给消费客户端的 JSON 数据格式化为 YYYY-MM-DD?

控制器动作很简单:

    // 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 Core 中配置 Json Serialize,您可以将 AddJsonOptionsJsonSerializerSettings 一起使用。

    //
    // 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);