有没有办法改变DataContractJsonSerializer如何序列化日期?有没有办法来重写DataContractJsonSerializer如何序列化日期?
目前,它会日期转换为类似:
{
"date": "/Date(1260597600000-0600)/"
}
我宁愿把它序列化为只是因为1970年UTC这样毫秒,其他语言可以方便地与JSON数据工作。
有没有办法改变DataContractJsonSerializer如何序列化日期?有没有办法来重写DataContractJsonSerializer如何序列化日期?
目前,它会日期转换为类似:
{
"date": "/Date(1260597600000-0600)/"
}
我宁愿把它序列化为只是因为1970年UTC这样毫秒,其他语言可以方便地与JSON数据工作。
不,序列化程序本身没有这样做的钩子。但是你可以使用一些序列化回调来实现这种相同的行为。您将创建另一个数据成员(字符串类型),并且在数据序列化之前,将调用[OnSerializing]
回调函数将DateTime
字段的值复制到字符串1。在关于序列化代理的帖子(在http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks.aspx)中,“原语的序列化格式的细粒度控制”部分显示了需要完成的更多细节。
那么在主题为“基元的序列化格式的细粒度控制”主题下有一个解决方法http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks.aspx。
主要想法是使用字符串支持字段的反序列化值和一个属性执行序列化和deserialzation在setter和getter中。这从性能角度来看并不理想,但在某些情况下它可能是一种解决方案。