为ASP配置JSON序列化.. NET web服务

本文关键字:NET web 服务 序列化 JSON ASP 配置 | 更新日期: 2023-09-27 17:52:45

我有一个使用JSON通信的.asmx web服务。从它我只是返回对象ASP。NET神奇地序列化成JSON。

唯一的问题是日期是这样序列化的:

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

我需要用ISO8601格式序列化它们,像这样:

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

使用ASP。. NET的Web API在这一点上不是一个选项,所以我的问题是:有没有一种方法可以为ASP配置默认的JSON序列化器?. NET web服务以这样的方式返回ISO8601日期?

为ASP配置JSON序列化.. NET web服务

在我的ASMX文件中,我将返回类型设置为void,然后我这样做…

MyCustomClass myObj=MyCustomClass.Load();
string myJson=JsonConvert.SerializeObject(myObj);
HttpContext.Current.Response.ContentType="application/json";
HttpContext.Current.Response.Write(myJson);

这样做是为了对输出有更细粒度的控制。如果你在运行Json。. NET 4.5,那么默认情况下您应该已经拥有ISO 8601日期格式。但假设你运行的是旧版本。下面是您应该做的(确保您在ASMX中将函数的返回类型设置为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。网络文档。