我正在开发一个引用 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:50 -07:00。
好的,太好了......唯一的问题是 Azure 服务只需要一个DateTime
,而不是一个DateTimeOffset
. 我不拥有 Azure 服务,因此无法更改其行为。
所以(忽略我正在丢失偏移量)我需要的是序列化为:
{"FooId":1,"FooDate":"/Date(1342732970)/"}
我的第一种方法是使用返回部分的DateTime
getter 向类添加一个新的别名属性/数据成员。但是,WinRT 不支持 DateTime 类型。DateTime
DateTimeOffset
有几种 hacky 方法可以解决这个问题,但我想看看是否有一种优雅的方法可以做到这一点,然后再诉诸其中一种:
- POST前序列化结果的正则表达式
- 返回 JSON 格式日期的类的字符串属性
谢谢