2016-04-25 18 views
1

ODataがDateTimeDateTimeOffsetをシリアル化する方法を変更する必要があります。WebAPI 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のようにJsonのシリアル化にNewtonsoft.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が表示されます。

関連する問題