私は、ac# WinRT プロジェクトを参照する Windows 8 Metro アプリケーションに取り組んでいます。とりわけ、c# プロジェクトは、Azure サービスに対して Web 要求を行い、SQL Azure データベースに対して CRUD 操作を実行します。
サービスで POST 操作を実行するときは、クラスのインスタンスをシリアル化し、それをリクエストの本文に入れます。
public sealed class Foo
{
int FooId { get; set; }
DateTimeOffset FooDate { get; set; }
}
これを を使用してシリアル化するDataContractJSONSerializer
と、結果は次のようになります。
{"FooId":1,"FooDate":{"DateTime":"/Date(1342732970000)/","OffsetMinutes":-420}}
参考までに、これは 2012 年 7 月 19 日 2:22:50PM -07:00 です。
わかりました... 唯一の問題は、Azure サービスがDateTime
ではなくだけを期待していることDateTimeOffset
です。Azure サービスを所有していないため、その動作を変更できません。
したがって、(オフセットを失っていることを無視して)シリアル化する必要があるのは次のとおりです。
{"FooId":1,"FooDate":"/Date(1342732970)/"}
DateTime
私の最初のアプローチは、新しいエイリアスプロパティ/データ メンバーをクラスに追加しDateTime
、DateTimeOffset
. ただし、WinRT は DateTime 型をサポートしていません。
これを回避するハックな方法がいくつかありますが、これらのいずれかに頼る前に、これを行うエレガントな方法があるかどうかを確認したかったのです。
- POST前のシリアル化結果の正規表現
- JSON 形式の日付を返すクラスの文字列プロパティ
ありがとう