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

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

            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中定义而且赋值,这样就不用在每一个方法里边都从新赋值了。web

          

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

           

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

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------spa

 园子里边的解决方案: code

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

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------      htm

MVC web api 返回JSON的几种方式

一、在WebApiConfig的Register中加入如下代码

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

二、在WebApiConfig的Register中加入如下代码

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

三、在WebApiApplication的Application_Start中加入如下代码

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

 

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

MVC中默认使用Newtonsoft.Json序列化的,因此在WebApiConfig的Register中加入如下代码便可

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

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

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