2016-04-25 137 views
1

我需要更改OData序列化的方式DateTimeDateTimeOffsetWebAPI OData日期時間序列化

目前我們使用的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序列化,並且很難找到一些如何更改序列化器行爲的示例。

感謝您的幫助!

+0

我想你需要的是在這裏回答:http://stackoverflow.com/a/15400048/4067893 這是:你需要實現一個自定義的ODataEntityTypeSerializer。 – elbecita

+0

是的,這是一個好的開始,但並沒有說如何改變原始類型的序列化行爲。 –

回答

5

您可以通過創建定製有效載荷coverter實現這一點,

  1. 實現一個類繼承類ODataPayloadValueConverter

  2. 覆蓋方法公共覆蓋對象ConvertToPayloadValue(對象值,IEdmTypeReference edmTypeReference)

  3. 如果(值爲DateTimeOffSet) {}在方法 中有此項檢查返回「CustomziedString」; }

  4. 通過設置像 model.SetPayloadValueConverter(轉換器)註冊到你的模型;

然後,以您自定義的方式顯示DateTimeOffset中的有效負載。