1

我正在尝试将 Json 格式化程序换成 Json.Net,所以我可以获得 ISO 日期而不是“/Date(1379112467317)/”

我还让 .Net (WebForms) 通过 [WebMethod] 自动神奇地处理 Json 序列化/反序列化。似乎没有使用 Json.Net 格式化程序。

在我的 global.asax 中,我可以看到旧的 MS Json 格式化程序被删除,新的 Json.net 格式化程序与 IsoDateTimeConverter 一起添加。

但是,我的 [Webmethod] 仍然返回旧的 /Date()/ json 字符串,而不是 Iso 日期。我是否必须在我的 global.asax 中为 [Webmethod] 的自动魔术做任何特别的事情才能使用新的格式化程序?

这是全局代码:

见: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

0

我认为您设置格式化程序的方式对我来说看起来不错。但是你如何确保它在网络表单返回中被使用,它不会自动发生。

[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public Something GetSomething() {

}

你试试怎么样。

于 2013-10-01T23:43:55.087 回答