2012-10-12 137 views
12

He configurado globalmente explícitamente mi aplicación MVC4 para usar el serializador JSON.NET. Sé que tengo la opción de usar las fechas estándar ISO o el formato de fecha anterior de Microsoft al serializar las fechas.WebApi Json.NET manejo de fecha personalizado

Pero, ¿cómo puedo generar mi propia cadena de formato de fecha y hora personalizada, como: "dd/MM/aaaa hh: mm".

Podría hacer esto en MVC3 cuando conecte Json.NET como el serializador predeterminado pero parece que no puede hacerlo en MVC4.

Hasta el momento en el que he hecho 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; 

y el convertidor de encargo i trató de impliment es así:

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 sería apreciado :)

Respuesta

20

Cambio su configuración establece un código como este:

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; 

En su código solo está cambiando el valor de la variable local.

+0

así que estaba asignando la configuración de Jsonserializersettings recién configurada a la configuración del serializador en lugar de su padre jsonFormatter ?? .... hmmm bastante supongo que es trabajo tbh, pero gracias por su ayuda :) – P0DD3R5

0

Gracias, me estaba volviendo loca, esto funcionó muy bien para mí, pegar esto en el Global.asax.cs

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

crear un MyDateTimeConvertor clase, pegar esto en la clase

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

wep api mvc4, servicios web, formato de fecha personalizado.

Cuestiones relacionadas