有沒有辦法改變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中。這從性能角度來看並不理想,但在某些情況下它可能是一種解決方案。