Json.Net与[WebMethod]

时间:2013-10-01 23:14:49

标签: json.net webmethod

我正在尝试将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));

1 个答案:

答案 0 :(得分:0)

我认为你设置格式化程序的方式对我来说很好。但是如何确保它在webform返回中使用,它不会自动发生。

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

}

你怎么试试。