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

时间:2013-07-09 16:35:43

标签: c# json

似乎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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

虽然我自己没试过,但请查看JSON Dates are Different in ASP.NET MVC and Web API

博客条目引用了KnockoutJS中使用的日期值,但我希望这会为您提供在AngularJS中使用它的主角。