2012-10-12 8 views
12

Ich habe global meine MVC4-App explizit für den JSON.NET-Serializer konfiguriert. Ich weiß, dass ich die Wahl habe, die ISO-Standarddaten oder das alte Microsoft-Datumsformat beim Serialisieren von Daten zu verwenden.WebApi Json.NET benutzerdefinierte Datumsverarbeitung

Aber wie kann ich meine eigene benutzerdefinierte dateTime Format Zeichenfolge ausgeben, wie: "TT/MM/JJJJ hh: mm".

Ich könnte dies in MVC3 tun, wenn Json.NET als Standard-Serializer einstecken, aber es scheint nicht in MVC4 zu tun.

Bisher in Application_Start ich getan habe:

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; 

und der benutzerdefinierten Konverter i zu impliment versucht, ist in etwa so:

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 geschätzt :)

Antwort

20

ändern würde Ihre Einstellung einrichten Code wie folgt:

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; 

In Ihrem Code ändern Sie nur den Wert der lokalen Variablen.

+0

also habe ich die neu konfigurierten Jsonserializersettings zu Serializer-Einstellungen statt seiner Eltern jsonFormatter ?? .... hmmm eine ganze Menge davon war rate Arbeit tbh, aber danke für Ihre Hilfe :) – P0DD3R5

0

Danke, ich war verrückt, das ist für mich sehr gut funktioniert, diese

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

erstellen Sie eine Klasse MyDateTimeConvertor in der Global.asax.cs einfügen, fügen Sie diese in der Klasse

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

wep api mvc4, Webdienste, benutzerdefiniertes Datumsformat.

Verwandte Themen