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

Jim*_*rts 14 c# json datacontractserializer

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

目前,它会将日期转换为以下内容:

{
  "date": "/Date(1260597600000-0600)/"
}
Run Code Online (Sandbox Code Playgroud)

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

car*_*ira 9

不,序列化器本身没有钩子来做到这一点.但是您可以使用某些序列化回调来实现相同的行为.您将创建另一个数据成员(类型为字符串),并且在序列化数据之前,[OnSerializing]将调用回调以将DateTime字段的值复制到字符串1.关于序列化代理的帖子中"基元序列化格式的细粒度控制"一节(http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/06/wcf-extensibility-serialization-callbacks .aspx)显示了需要完成的更多细节.