WebAPI OData日期时间序列化

Jan*_*chl 2 c# asp.net datetime odata asp.net-web-api

我需要改变的OData序列化的方式DateTimeDateTimeOffset.

目前我们正在使用 Microsoft.AspNet.OData 5.9.0

默认情况下,格式是最有可能的yyyy-MM-dd'T'HH:mm:ss.FFFFFFzzz,但我需要具有恒定的数字位数yyyy-MM-dd'T'HH:mm:ss.fffzzz.

到目前为止,我已经了解到WebApi OData不像WebApi那样Newtonsoft.Json用于Json序列化,并且很难找到一些如何更改序列化器行为的示例.

感谢帮助!

小智 6

您可以通过创建定制的有效负载转换器来实现此目的,

  1. 实现类扩展类ODataPayloadValueConverter

  2. 覆盖方法公共覆盖对象ConvertToPayloadValue(对象值,IEdmTypeReference edmTypeReference)

  3. 在方法if(value为DateTimeOffSet){return"CustomziedString"; }

  4. 通过设置类似model.SetPayloadValueConverter(转换器)注册到您的模型;

然后,响应中的有效负载将以您自定义的方式显示DateTimeOffset.