【发布时间】:2013-10-02 07:43:55
【问题描述】:
我正在尝试将 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));
【问题讨论】:
-
你怎么知道格式化程序被调用,你的响应是否在 webform 中被标记为 application/json 响应?
-
我不确定在调用 WebMethods 时是否调用了我的格式化程序。你知道该怎么说吗?到目前为止,我只知道通过在 App_Start 中单步执行旧的被删除,新的被添加。来自网络的响应是 JSON(而不是 XML)。