WebAPI OData日期时间序列化

时间:2016-04-25 11:48:01

标签: c# asp.net datetime asp.net-web-api odata

我需要更改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序列化,并且很难找到一些如何更改序列化程序行为的示例。

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

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

  1. 实现类扩展类ODataPayloadValueConverter

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

  3. 在方法中进行这样的检查 if(value是DateTimeOffSet) {     返回“CustomziedString”; }

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

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