Ale*_*lex 30 c# serialization datetime json json.net
我正在使用JSON.NET直接从对象实例序列化DateTime值(不使用带格式化程序的DateTime.ToString()).
有没有办法强制JSON.NET在序列化中包含毫秒,即使DateTime的毫秒组件为零?
背景:对于这个JSON端点,我有一个非常慢的Web服务使用者.条件逻辑对于消费者来说是昂贵的,因此我希望每次都提供相同的数据格式.
Bri*_*ers 44
我们在当前项目中遇到了同样的问题.我们使用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);
Run Code Online (Sandbox Code Playgroud)
如果你没有使用Web API,你可以通过创建一个新的实例来做同样的事情,如上所示JsonSerializerSettings添加IsoDateTimeConverter它,然后将序列化设置设置传递给JsonConvert.SerializeObject().
注意:如果您要序列化一个DateTimeOffset或一个本地,DateTime并且想要包含时区偏移量,请将'Z'上述格式中的引用替换为不带引号K.有关详细信息,请参阅文档中的自定义日期和时间格式字符串.