C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法...
本人新手,在.Net中寫WebAPI的時候,當接口返回的json數(shù)據(jù)含有日期時間類型的字段時,總是在日期和時間中夾著一個字母T;微軟這么設(shè)置可能有其內(nèi)在的初衷,但是對于我來說,這樣的格式不是很方便,前端同學(xué)展示出來的時候也總是要記得處理一下顯示格式。曾經(jīng)問過部門內(nèi)一位老鳥,老鳥的反應(yīng)告訴我這在微軟的框架下做json轉(zhuǎn)換是不可避免的;當初一度放棄了這個問題。后來突然冷靜分析了一下,微軟不可能做的這么絕的吧。
從博客園里找到了一篇親測有效的文章,有需要的可以去參考下。本文主要作為自己學(xué)習(xí)過程的問題記錄,以加深自己的理解。
我的開發(fā)環(huán)境是.Net Framework 4.7.1下的WebAPI。直接調(diào)的ApiController自帶的Ok(object content)方法,日期時間類型的格式問題如上描述。
1、框架在ApiController里面定義了很多現(xiàn)成的成員方法和屬性。其中幾個如下:
我所使用的就是最下面的方法。
2、其實,Json<T>方法是可以直接調(diào)用返回json數(shù)據(jù)給前端的;仔細查看發(fā)現(xiàn),該方法的第一個重載方法有三個參數(shù),第二個參數(shù)就是json序列化的相關(guān)設(shè)置。這給我們一個提示:我們可以自行調(diào)用Json<T>方法,序列化相關(guān)的設(shè)置參數(shù)根據(jù)自己的需要傳一個Newtonsoft.Json.JsonSerializerSettings類型的對象過去即可。
3、但是,我是直接調(diào)用的框架的Ok方法,這個方法在框架內(nèi)部是如何轉(zhuǎn)json的我還不清楚(先挖個坑,日后明白了來填);也就是我并沒有任何顯示給序列化參數(shù)賦值的行為,那么可以推測,.net是不是從全局靜態(tài)配置中讀的呢?通過GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings拿到這個json序列化設(shè)置參數(shù),據(jù)上面那位仁兄跟蹤發(fā)現(xiàn),這個值默認是"yyyy'-'MM'-'dd'T'HH':'mm':'ss"。那么原因顯而易見了,.net取這個量調(diào)的Json<T>方法無疑了。或者說.Net下的Ok方法也是間接調(diào)用的這個方法實現(xiàn)的轉(zhuǎn)json。
4、在WebApiConfig文件中重置GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings為自定義的時間格式即可。
?
?
?
posted on 2019-02-02 08:57 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/10347510.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Swift]LeetCode468.
- 下一篇: 2019 CCPC wannfly w