WebApi Json.NET自定义日期处理

时间:2012-10-12 10:12:29

标签: asp.net-mvc-4 asp.net-web-api json.net

我已全局明确配置我的MVC4应用程序以使用JSON.NET序列化程序。我知道在序列化日期时我可以选择使用ISO标准日期或旧的Microsoft日期格式。

但是如何输出我自己的自定义dateTime格式字符串,例如:" dd / MM / yyyy hh:mm"。

当我将Json.NET作为默认序列化程序插入时,我可以在MVC3中执行此操作,但似乎无法在MVC4中执行此操作。

到目前为止,我已经完成了application_start:

  var settings =     GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;            
        JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()
        {
            Formatting = Formatting.Indented,
            DateTimeZoneHandling = DateTimeZoneHandling.Utc,


        };
        jSettings.Converters.Add(new MyDateTimeConvertor() );
        settings = jSettings;

和我试图暗示的自定义转换器是这样的:

 public class MyDateTimeConvertor : DateTimeConverterBase
    {
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            return DateTime.Parse(reader.Value.ToString());
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy hh:mm"));
        }
    }

Anyhelp将不胜感激:)

2 个答案:

答案 0 :(得分:21)

更改您的设置设置代码:

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()         
{
    Formatting = Formatting.Indented,
    DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
jSettings.Converters.Add(new MyDateTimeConvertor());
jsonFormatter.SerializerSettings = jSettings;

在您的代码中,您只是更改了本地变量值。

答案 1 :(得分:0)

谢谢,我疯了,这对我来说效果很好,把它贴在Global.asax.cs

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings =...

创建一个MyDateTimeConvertor类,将其粘贴到类

public class MyDateTimeConvertor : DateTimeConverterBase
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return DateTime...

wep api mvc4,网络服务,自定义日期格式。