2012-10-12 9 views
12

MVC4アプリケーションをJSON.NETシリアライザを使用するようにグローバルに明示的に設定しました。私は日付をシリアル化するときにISO標準日付または古いMicrosoft日付形式を使用する選択肢があることを知っています。WebApi Json.NETカスタム日付処理

しかし、「dd/MM/yyyy hh:mm」のように、独自のカスタムdateTimeフォーマット文字列を出力するにはどうすればよいですか。

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; 

と私はimplimentしようとしたカスタムコンバータのようなので、次のとおりです。

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いただければ幸いです:)

答えて

20

変更をあなたの設定は次のようなコードを設定します:

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; 

コードでは、ローカル変数の値を変更するだけです。

+0

私は新しく設定されたJsonserializersettingsを、その親jsonFormatterの代わりにシリアライザの設定に割り当てていましたか?....かなりうまくいっているのは、tbhですが、あなたの助けに感謝しています:) – P0DD3R5

0

おかげで、私は、クラスMyDateTimeConvertorを作成Global.asax.cs

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

でこれを貼り付けるクラスでこれを貼り付け、これは私にとって非常によく働いた、狂った

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

wep api mvc4、Webサービス、カスタム日付形式。

関連する問題