代码之家  ›  专栏  ›  技术社区  ›  Fabricio Rodriguez

从.NET Core 2.1 Web API中的JSON日期时间响应中删除时间组件

  •  1
  • Fabricio Rodriguez  · 技术社区  · 6 年前

    我有一个ASP.NET Core2.1WebAPI,它在它的一个控制器操作中返回一个日期时间。JSON如下所示:

    1965-02-03T00:00:00
    

    我想这是ISO 8601…

    因为这实际上是一个出生日期,所以我希望它不包含时间成分。.NET没有纯日期数据类型(就像我的基础MySQL数据库一样),因此我必须使用日期时间类型。有没有办法将发送到消费客户端的JSON数据格式化为YYYY-MM-DD?

    控制器操作非常简单:

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

    人的模型也很简单:

    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; }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Edward    6 年前

    用于配置 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);