如何重新配置JsonFormatter序列化日期的方式

本文关键字:日期 方式 序列化 JsonFormatter 何重新 配置 | 更新日期: 2023-09-27 18:21:45

Asp.Net MVC Web API似乎使用了默认的序列化格式,其中秒的分数超过三位数。

当用AngularJS格式化超过三位小数秒的日期时,日期不能正确显示

以下是我设置序列化的方法:

config.Formatters.Remove(config.Formatters.XmlFormatter);
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

当前日期显示为:

yyyy-MM-ddTHH:mm:ss.SSSSZ

有没有一种方法可以将日期默认序列化格式配置为只显示:

yyyy-MM-ddTHH:mm:ss

如何重新配置JsonFormatter序列化日期的方式

您可以创建这样的自定义转换器。

public class MyDateTimeConverter : DateTimeConverterBase
{
        public override void WriteJson(JsonWriter writer,
                                           object value,
                                                  JsonSerializer serializer)
        {
            writer.WriteValue(((DateTime)value)
                               .ToString("yyyy-MM-ddTHH:mm:ss"));
        }
}

然后,将其配置为供JSON.NET使用。

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.Converters.Add(new MyDateTimeConverter());

虽然我自己还没有尝试过,但请查看ASP.NET MVC和Web API中的JSON日期不同。

博客条目提到在KnockoutJS中使用日期值,但我希望这将为您在AngularJS中使用它提供线索。