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是須要序列化的對象
複製代碼
相關文章
相關標籤/搜索