如何重新配置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
您可以创建这样的自定义转换器。
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
中使用它提供线索。