ASP.NET WebApi 自带Json返回日期带T无法格式化的问题

http://www.cnblogs.com/shawen/p/5710203.html

       WebApi自带json序列化对遇到时间日期字段的时候,到前端获取的格式总是为“ 2016-07-14T15:32:44”,中间总是会带一个T,显然不是很友好。先是偷懒在园子里边去找一些解决方案,尝试了一下,然并卵。于是,自己想办法。

            1.先是查看ApiController.JsonResults<T>的源码

           

           其实Json<T>方法是有三个重载方法的,我们只需要在返回对象的时候调用重载方法,加上序列化对象serializerSettings参数即可,该对象的获取可以通过

            

           GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings 来进行获取,我们默认看到的该参数就是"yyyy'-'MM'-'dd'T'HH':'mm':'ss",那么显而易见,最后的格式带T就事这个参数的问题。我们只需要对这个参数重新赋值为"yyyy'-'MM'-'dd' 'HH':'mm':'ss"即可。由于这个参数是一个全局参数,我们可以在WebAPi的Register中定义并且赋值,这样就不用在每个方法里边都重新赋值了。

          

         到此处,该问题算是完美解决了,但是有没有办法不要每个方法都加序列化的参数,程序员都是爱偷懒的。但是肯定有的。其实很简单,分析JsonResult<T>的源码即可发现该方法是可以被重写的。只需要在基类方法中重写即可。基类重写如下:

           

           重写基类方法后需要注意的是,该方法由于返回值是JsonResult,也会被当做API方法,默认都是POST方法,会替换掉没有Route特性的方法,所以临时加了个HttpGet特性。此处还有待完善。项目中碰到的问题,记录一下,欢迎大家拍砖!

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 园子里边的解决方案: 

引用自:http://www.cnblogs.com/wuball/p/4231343.html

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------      

MVC web api 返回JSON的几种方式

1、在WebApiConfig的Register中加入以下代码

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));

2、在WebApiConfig的Register中加入以下代码

config.Formatters.Remove(config.Formatters.XmlFormatter);

3、在WebApiApplication的Application_Start中加入以下代码

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

 

1、在MVC中全局去除时间格式中带T的问题。

MVC中默认使用Newtonsoft.Json序列化的,所以在WebApiConfig的Register中加入以下代码即可

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter
             {
                 DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
             });

2、在webservice中去除时间带T的问题。

复制代码
复制代码
IsoDateTimeConverter timejson = new IsoDateTimeConverter
      {
          DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
      };
 //在序列化的时候传入timejson对象
 //如:
 return JsonConvert.SerializeObject(object, timejson);//object是需要序列化的对象
复制代码
复制代码

 

本人擅长Ai、Fw、Br、Ae、Pr、Id、Ps等软件的安装与卸载,精通CSS、JavaScript、PHP、C、C++、C#、Java、Ruby、Perl、Lisp、Python、Objective-C、ActionScript等单词的拼写,熟悉Windows、Linux、MacOS、IOS、Android等系统的开关机
分类:  ASP.NET
标签:  WebAPI日期Json序列化
0
0
« 上一篇: C# 大数据导出word的假死报错的处理方法


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值