原文:C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法

本人新手,在.Net中写WebAPI的时候,当接口返回的json数据含有日期时间类型的字段时,总是在日期和时间中夹着一个字母T;微软这么设置可能有其内在的初衷,但是对于我来说,这样的格式不是很方便,前端同学展示出来的时候也总是要记得处理一下显示格式。曾经问过部门内一位老鸟,老鸟的反应告诉我这在微软的框架下做json转换是不可避免的;当初一度放弃了这个问题。后来突然冷静分析了一下,微软不可能做的这么绝的吧。

从博客园里找到了一篇亲测有效的文章,有需要的可以去参考下。本文主要作为自己学习过程的问题记录,以加深自己的理解。


我的开发环境是.Net Framework 4.7.1下的WebAPI。直接调的ApiController自带的Ok(object content)方法,日期时间类型的格式问题如上描述。

1、框架在ApiController里面定义了很多现成的成员方法和属性。其中几个如下:

我所使用的就是最下面的方法。

2、其实,Json<T>方法是可以直接调用返回json数据给前端的;仔细查看发现,该方法的第一个重载方法有三个参数,第二个参数就是json序列化的相关设置。这给我们一个提示:我们可以自行调用Json<T>方法,序列化相关的设置参数根据自己的需要传一个Newtonsoft.Json.JsonSerializerSettings类型的对象过去即可。

3、但是,我是直接调用的框架的Ok方法,这个方法在框架内部是如何转json的我还不清楚(先挖个坑,日后明白了来填);也就是我并没有任何显示给序列化参数赋值的行为,那么可以推测,.net是不是从全局静态配置中读的呢?通过GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings拿到这个json序列化设置参数,据上面那位仁兄跟踪发现,这个值默认是"yyyy'-'MM'-'dd'T'HH':'mm':'ss"。那么原因显而易见了,.net取这个量调的Json<T>方法无疑了。或者说.Net下的Ok方法也是间接调用的这个方法实现的转json。

4、在WebApiConfig文件中重置GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings为自定义的时间格式即可。

 

 

 

C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法的更多相关文章

  1. 解决Entity Framework中DateTime类型字段异常

    从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值 具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大.SqlServe ...

  2. 解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 刚开始使用python,还不太熟练,遇到一个datetime数据类型的问题: 在mysql数据库中,有一个datetime类型的字段用于 ...

  3. 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题

    今天在做项目过程中,查询一个表中数据时总碰到这个问题:      java.sql.SQLException:Value '0000-00-00' can not be represented as ...

  4. 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

    问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...

  5. 如何把datetime类型字段修改为int类型

    如何把datetime类型字段修改为int类型 我有一个表为:table1 其中有一个datetime类型的字段  a    现在我想我想把字段a的类型改为int类型 当我执行以下命令时报如下的错误a ...

  6. Eclipse中js文件修改后浏览器不能及时更新的解决办法

    项目中js文件修改后浏览器不能及时更新的解决办法 转载:http://www.codeweblog.com/%E9%A1%B9%E7%9B%AE%E4%B8%ADjs%E6%96%87%E4%BB%B ...

  7. mysql中的sql-mode导致的datetime类型字段不能为0000

    问题描述: 在执行建表语句的时候,出现invalid default datetime value '0000-00-00 00:00:00',从字面意思看,就是不合法的默认值'0000-00-00 ...

  8. mysql中varchar类型和datetime类型字段进行比较

    我是在mysql5.7版本进行比较 表a的字段order_no和表iwebshop_tmp的字段order_no一样 需要更新iwebshop_member_order表的datetime类型expi ...

  9. IBatisNet动态update以及DateTime类型字段处理

    在维护一个老项目中碰到的问题.SQL配置如下(只简单列出两个字段): <update id="ProjectInfo.Update" parameterClass=" ...

随机推荐

  1. 取消cp命令别名

    1. 取消cp命令别名unalias cpcp -rf恢复别名alias cp='cp -i'2.关闭当前用户下的cp别名配置sed -i "s/alias cp='cp -i'/#alia ...

  2. 给Linux设置SSH登录邮件提醒

    给Linux设置SSH登录邮件提醒 心血来潮,用 last 命令查看了登录记录,不看不知道,一看就有问题.竟然有两个陌生的IP ,一个是美国欧莱雅的,一个是北京联通的.真是郁闷,密码简单了真不行 后来 ...

  3. go timer

    go timer package main import ( "fmt" "time" ) func debounce(interval time.Durati ...

  4. TypeScript基础知识

    一. TypeScript是js的超集,可以应用所有js语法 二. 特点: 1. 优点 a. 可以在编译阶段就发现大部分错误,这总比在运行时候出错好 b. 同一目录下不同文件中,使用统一命名,会有命名 ...

  5. django 简单会议室预约(5)

    再来看看views.py的后半部分,对数据库的增删改查 #获取学院列表 def get_acad_list(): room_list = ConfeRoom.objects.all() #对数据库的操 ...

  6. Appium_python3使用汇总

    1. 对webview页面元素的处理self.driver.switch_to.context("WEBVIEW_com.aaa.bbb")source = self.driver ...

  7. 洛谷 P2384 最短路

    洛谷 P2384 最短路 题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你10000000000000000000000000000 ...

  8. 洛谷 P2692 覆盖

    P2692 覆盖 题目背景 WSR的学校有B个男生和G个女生都来到一个巨大的操场上扫地. 题目描述 操场可以看成是N 行M 列的方格矩阵,如下图(1)是一个4 行5 列的方格矩阵.每个男生负责打扫一些 ...

  9. 终于研究出如何设置新版paypal付款时汇率损失方的问题了

    http://bbs.55haitao.com/thread-1686005-1-1.html 终于研究出如何设置新版paypal付款时汇率损失方的问题了 登录paypal后,选"设置&qu ...

  10. 51Nod——N1284 2 3 5 7的倍数

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1284 基准时间限制:1 秒 空间限制:131072 KB 分值: 5  ...