有没有办法覆盖DataContractJsonSerializer如何序列化日期?

有没有办法改变DataContractJsonSerializer序列化日期的方式?

目前,它会将日期转换为:

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

我宁愿让它序列化为自1970年以来的毫秒。这样,其他语言可以很容易地使用json数据。

不,序列化器本身没有钩子来做到这一点。 但是您可以使用某些序列化回调来实现相同的行为。 您将创建另一个数据成员(类型为字符串),并且在序列化数据之前,将调用[OnSerializing]回调以将DateTime字段的值复制到字符串1。 关于序列化代理的post中“基元序列化格式的细粒度控制”一节( 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主题为“序列化格式的细粒度控制”原始人”。

主要思想是对未序列化的值使用字符串支持字段,以及在setter和getter中执行序列化和反序列化的属性。 从性能视图来看,这并不理想,但在某些情况下它可能是一种解决方案。