1

JsonフォーマッターをJson.Netに交換しようとしているので、「/Date(1379112467317)/」の代わりにISO日付を取得できます

また、.Net (WebForms) が [WebMethod] を介して Json のシリアライゼーション/デシリアライゼーションを自動的に処理できるようにしています。Json.Net フォーマッタを使用していないようです。

私の global.asax では、古い MS Json フォーマッタが削除され、新しい Json.net フォーマッタが IsoDateTimeConverter とともに追加されていることがわかります。

しかし、私の [Webmethod] は、Iso 日付ではなく、古い /Date()/ json 文字列で戻ってきます。[Webmethod] の自動マジックで新しいフォーマッタを使用するには、global.asax で何か特別なことをする必要がありますか?

グローバルのコードは次のとおりです。

に見られるように: http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

var formatter = config.Formatters.Where(f => { return f.SupportedMediaTypes.Any(v => v.MediaType.Equals("application/json", StringComparison.CurrentCultureIgnoreCase)); }).FirstOrDefault();

if (formatter != null)
{                    
    config.Formatters.Remove(formatter);
}

JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new IsoDateTimeConverter());
config.Formatters.Add(new JsonNetFormatter(serializerSettings));
4

1 に答える 1