我使用 JSON.NET 直接从对象实例序列化 DateTime 值(不使用带有格式化程序的 DateTime.ToString() )。
有没有办法强制 JSON.NET 在序列化中包含毫秒,即使 DateTime 的毫秒部分为零?
背景:我的这个 JSON 端点的 Web 服务使用者非常慢。条件逻辑对于消费者来说是昂贵的,所以我想每次都提供相同的数据格式。
我们在当前的项目中遇到了同样的问题。我们使用 Web API(以及 JSON.Net)来实现 REST API。我们发现,在序列化时DateTime
对于对象,JSON.Net 会忽略毫秒中的尾随零,或者如果日期为零,则完全忽略日期中的毫秒。我们的客户期望一个固定长度的日期时间字符串,其中精确的 3 位数字表示毫秒。我们通过执行以下操作来修复它Application_Start()
:
JsonSerializerSettings settings = HttpConfiguration.Formatters.JsonFormatter.SerializerSettings;
IsoDateTimeConverter dateConverter = new IsoDateTimeConverter
{
DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'"
};
settings.Converters.Add(dateConverter);
如果您不使用 Web API,您可以通过创建一个新实例来执行相同的操作JsonSerializerSettings
,添加IsoDateTimeConverter
如上所示,然后将序列化器设置传递给JsonConvert.SerializeObject()
.
注意:如果您要序列化DateTimeOffset
或本地人DateTime
并且您想要包含时区偏移量,请替换引用的'Z'
在上面的格式中,不带引号K
.
See 自定义日期和时间格式字符串在文档中了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)