配置ASP.NET Web服务的JSON序列化

16 浏览
0 Comments

配置ASP.NET Web服务的JSON序列化

我有一个使用JSON进行通信的.asmx web服务。在其中,我只是返回对象,ASP.NET会自动将其序列化为JSON。

唯一的问题是,日期的序列化格式如下:

"myDate": "\/Date(1388332525)\/"

而我需要它们以ISO8601的格式进行序列化,如下所示:

"myDate":"\/Date(2012-09-19T03:27:14)\/"

在这一点上,使用ASP.NET的Web API不是一个选择,所以我的问题是:有没有办法配置ASP.NET web服务的默认JSON序列化器,以便它返回ISO8601日期?

0
0 Comments

问题的原因是在返回的JSON字符串末尾出现了'{"d":null}',并且在ASP.NET Web服务中配置JSON序列化时,无法完全控制输出。

解决方法是使用Json.NET的JsonSerializerSettings来设置日期格式,并将返回类型设置为void。下面是解决方法的代码:

JsonSerializerSettings isoDateFormatSettings = new JsonSerializerSettings(){ DateFormatHandling = DateFormatHandling.IsoDateFormat };
MyCustomClass myObj=MyCustomClass.Load();
string myJson=JsonConvert.SerializeObject(myObj, isoDateFormatSettings);
HttpContext.Current.Response.ContentType="application/json";
HttpContext.Current.Response.Write(myJson);

这个解决方法基于Json.NET文档的说明。然而,这个解决方法在某些情况下仍然会在响应的末尾添加'{"d":null}'。有关这个问题的更多信息,请参考此链接:http://stackoverflow.com/questions/9939548

0