1. 程式人生 > >WebApi 自帶Json返回日期帶T無法格式化的問題

WebApi 自帶Json返回日期帶T無法格式化的問題

 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是需要序列化的物件
複製程式碼 複製程式碼

相關推薦

WebApi Json返回日期T無法格式化的問題

 WebApi自帶json序列化對遇到時間日期欄位的時候,到前端獲取的格式總是為“ 2016-07-14T15:32:44”,中間總是會帶一個T,顯然不是很友好。先是偷懶在園子裡邊去找一些解決方案,嘗試了一下,然並卵。於是,自己想辦法。             1.先是

ASP.NET WebApi Json返回日期T無法格式化的問題

       WebApi自帶json序列化對遇到時間日期欄位的時候,到前端獲取的格式總是為“ 2016-07-14T15:32:44”,中間總是會帶一個T,顯然不是很友好。先是偷懶在園子裡邊去找一些解決方案,嘗試了一下,然並卵。於是,自己想辦法。             1.先是檢視ApiContro

解決json顯示日期T的問題

-m format) object indent isod 顯示 etime time 解決 參照網友的解決方案 IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); timeFo

AngularJS處理ASP.Net MVC Json返回日期

ASP.NET MVC 在返回 JSON 型別時,,時間的格式會是 "/Date(1306418993027)/" public ActionResult Test(){    List<Person> persons = new List<Person

json返回日期格式化的解決

function jsonDateFormat(jsonDate) {//json日期格式轉換為正常格式 try { var date = new Date(parseInt(jsonDate.replace("/Date(", "").replac

解決WebApi,Mvc返回json資料遇見日期T

我們用webapi自帶的json序列化時,遇見資料庫datetime型別的日期中間會多加一個T,就像2017-09-09 22:11:26.267,而經過自帶的json處理後會變成2017-09-09T22:11:26.267。 解決辦法: 我們可以看到自帶的json有三

解決JSON返回的時間字元T的問題(前端解決辦法)

function showArticleList(id){    var myUrl = "../api/Articles";    $.ajax({        type: 'GET',        url: myUrl,        data: {            page: iIndex,

vue 專案中 如何動態監聽瀏覽器以及iOS手機微信返回按鈕的事件

vue搭建的頁面中,左上角的返回按鈕,我自己定義了返回的了路徑,可是當執行時,就會發現,蘋果手機的下方會有自帶的返回按鈕(安卓手機沒有),那麼這個按鈕的返回事件該如何設定呢? 一般情況下,微信自帶的返回按鈕都是返回上一個路徑,可是當我的頁面時使用者掃碼進入的,沒有上一條路徑

Andriod系統如何阻止手機返回按鈕的原路返回

最近在用mui混合開發Andriod APP時,碰到一個問題:手機自帶的返回按鈕,會一直原路返回前面開啟過的頁面。比如註冊-登入-填寫資料-個人中心,在個人中心點選自帶按鈕時,會一直返回到註冊頁面。按照正常的業務邏輯,進入個人中心頁面後,不能讓使用者再返回註冊頁面的。解決方法

Gson庫和AndroidJSON解析對轉義字元的處理存在不同

遇到一坑,以前用的是Gson庫,現在改為Android自帶的JSON解析,後端收到資料有時會解析失敗,查詢原因,發現Gson庫和Android自帶JSON解析對轉義字元的處理存在稍許的不同。 舉例如下: String s1 = "https://blog

定義webView,實現title和返回的webView,監聽webView的滑動事件

安卓webView介紹 WebView是基於webkit引擎展現web頁面的控制元件,它功能強大,除了具有一般View的屬性和設定外,還可以對url請求、頁面載入、渲染、頁面互動進行強大的處理。 We

h5監聽任何 App 返回鍵,以及安卓機裡的物理返回

var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ?

json時間字串T

在處理時間格式時,特別是通過json序列化datetime型別,返回給前端進行展示,你會發現的字串帶T。 例如:2017-09-05T13:08:56.080 在時間和日期之間會幫我們加個字母大些T,那如何解決呢? 一、提前在後端處理時間格式 將datetime型別轉換成

JS處理後臺傳回json格式的T時間資料

    最近做的專案,返回的時間資料有的帶T的,最初以為可能所有的都是這樣的,所以簡單寫了一個處理時間格式的方法function FormatTime(dataTime) { var time = dataTime.split(/[T+]/);

IOS開發學習27 ObjectC json解析方法的使用

1.生成json字串 NSMutableDictionary * header=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"201

MongoDB JSON類 序列化定義物件為Json字串解決方案

今天在使用MongoDB時,需要將自定義的POJO類通過mongoDB自帶的JSON.serialize序列化成一個Json格式的字串,但一直報json don't serialize object異常,又不想使用第三方的jar包,網上到處搜沒搜到。最後看api文件實現Ob

微信瀏覽器返回上一頁的停留位置

我們做過微信的應該都知道,微信自帶的返回上一頁,就是重新開啟頁面。並不是返回歷史頁面。我們PC端的瀏覽器是返回歷史頁面。點選返回頁面之後 上一個頁面的scrollTop還是之前沒有進入新頁面的位置。

springMVC返回json日期為Long的格式化

angle 評論 tle 想要 ron serialize contex 7月10日 tac springMVC返回的json日期為Long的格式化 標簽: spring mvcjson格式化mybatis時間 2015-10-30 14:48 1467人閱讀 評論

生成星期的日期格式

except stat tac 日期轉換 nts edate 問題 stack format 今天遇到一個日期轉換問題需要生成 如:2017-11-29 星期三 16:45 的日期格式的數據,所以記錄一下。 //例如輸入:2017-11-29 16:30:00 則輸出:2

SpringBoot學習筆記(5):處理前端JSON返回日期的格式

處理 date() ring row 學習筆記 post 直觀 val rtt SpringBoot學習筆記(4):處理前端JSON返回的日期的格式 問題描述   前端頁面顯示的時間為毫秒格式,不利於直觀顯示! 解決方法1——後端解決 public class Flow