13

JSON.NETシリアライザーを使用するようにMVC4アプリをグローバルに明示的に構成しました。日付をシリアル化するときに、ISO標準の日付または古いMicrosoftの日付形式を使用するかどうかを選択できることはわかっています。

しかし、どうすれば: "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;

そして、私が暗示しようとしたカスタムコンバーターは次のようなものです:

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

4

2 に答える 2

22

設定設定コードを次のように変更します。

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;

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

于 2012-10-12T11:25:20.733 に答える
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、Webサービス、カスタム日付形式。

于 2013-08-28T21:25:58.473 に答える