2011-02-10 78 views
0

我有一個從WCF webservice返回的DateTime。此DateTime是具有DataContract屬性的CLR對象的一部分。 DateTime是添加了DataMember屬性的屬性。一切都正確地返回到我的客戶端(一個Silverlight應用程序)。將JSON日期/時間轉換爲C#DateTime

我的問題是,我如何採取序列化版本的DateTime並將其轉換爲C#DateTime對象?

謝謝!

+0

反序列化它? – Oded 2011-02-10 21:16:57

回答

3

,但未通過Web服務返回的日期時間將是一個奇怪的格式,如

\/Date(1297367252340-0500)\/ 

原因的日期是在這個奇怪的格式是日期時間是在WCF原始。不幸的是,在JSON中沒有用於序列化日期和時間的通用標準化格式 - 各種框架使用各種字符串格式。

兩難境地是WCF需要本能地理解線上的特定字符串的確是DateTime,而不僅僅是另一個普通的vanilla JSON字符串。因此奇怪的格式。一旦DataContractJsonSerializer遇到以/ Date開頭的日期,它就開始嘗試將其解析爲日期。

WCF客戶端或Silverlight 2+客戶端不應該有這個問題 - 他們應該使用System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject或System.Web.Script.Serialization.JavaScriptSerializer.Deserialize。

如果您使用的是Web客戶端,則可以包含ASP附帶的.js文件。 NET AJAX(我相信它被稱爲MicrosoftAspNetAjax.js或MicrosoftAjax.cs,但名稱可能已更改)。它的反序列化函數也會自動解析這些日期。

希望有幫助!