Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebAPI OData日期时间序列化_C#_Asp.net_Datetime_Asp.net Web Api_Odata - Fatal编程技术网

C# WebAPI OData日期时间序列化

C# WebAPI OData日期时间序列化,c#,asp.net,datetime,asp.net-web-api,odata,C#,Asp.net,Datetime,Asp.net Web Api,Odata,我需要更改OData序列化DateTime和DateTimeOffset的方式 目前我们使用的是Microsoft.AspNet.OData 5.9.0 默认情况下,格式很可能是yyyy-MM-dd'T'HH:MM:ss.ffffffff-zzz,但我需要有恒定的位数,所以类似于yyy-MM-dd'T'HH:MM:ss.fffzzz 到目前为止,我了解到WebApi OData不像WebApi那样使用Newtonsoft.Json进行Json序列化,而且很难找到一些如何更改序列化程序行为的示例

我需要更改OData序列化
DateTime
DateTimeOffset
的方式

目前我们使用的是
Microsoft.AspNet.OData 5.9.0

默认情况下,格式很可能是
yyyy-MM-dd'T'HH:MM:ss.ffffffff-zzz
,但我需要有恒定的位数,所以类似于
yyy-MM-dd'T'HH:MM:ss.fffzzz

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


谢谢你的帮助

您可以通过创建定制的负载转换器来实现这一点

  • 实现一个类扩展类ODataPayloadValueConverter

  • 重写方法公共重写对象ConvertToPayloadValue(对象值,IEdmTypeReference edmTypeReference)

  • 在方法中进行这样的检查 如果(值为DateTimeOffSet) { 返回“CustomziedString”; }

  • 通过如下设置注册到您的模型中 型号:SetPayloadValueConverter(转换器)


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

    我认为您需要的答案如下:这是:您需要实现一个自定义ODataEntityTypeSerializer。是的,这是一个很好的开始,但没有说明如何更改基本类型的序列化行为。