2011-10-06 6 views
14

DataContractJsonSerializerが日付をシリアル化する方法を変更する方法はありますか?DataContractJsonSerializerが日付をシリアル化する方法をオーバーライドする方法はありますか?

現在のところ、それはのようなものに日付を変換します:私はむしろそれがUTC 1970年以来、その方法をとしてだけでミリ秒をシリアル化しています

{ 
    "date": "/Date(1260597600000-0600)/" 
} 

、他の言語を簡単にJSONデータを扱うことができます。

答えて

9

いいえ、それを行うシリアライザ自体にフックがありません。しかし、シリアライゼーションコールバックのいくつかを使用して、この同じ動作を実装することができます。別のデータメンバー(文字列型)を作成し、データがシリアル化される前に、DateTimeフィールドの値を文字列1にコピーするために[OnSerializing]コールバックが呼び出されます。シリアライゼーションサロゲートに関する投稿の「プリミティブのシリアライゼーション形式の細かい制御」の項(http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks.aspx)では、実行する必要があることの詳細が示されています。

0

ここでは、http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks.aspxで説明されている回避策が、「プリミティブのシリアライズ・フォーマットのファイングレイン制御」というトピックの下にあります。

主な考え方は、シリアル化されていない値の文字列バッキングフィールドと、セッターとゲッターで直列化と逆直列化を実行するプロパティを使用することです。パフォーマンスの観点からは理想的ではありませんが、状況によっては解決策になる可能性があります。

関連する問題