将JSON日期/时间转换为C#DateTime

时间:2011-02-10 21:15:30

标签: c# wcf json

我有一个从WCF Web服务返回的DateTime。此DateTime是具有DataContract属性的CLR对象的一部分。 DateTime是添加了DataMember属性的属性。一切都正常返回给我的客户端(Silverlight应用程序)。

我的问题是,如何使用DateTime的序列化版本并将其转换为C#DateTime对象?

谢谢!

1 个答案:

答案 0 :(得分:3)

从Web服务返回的DateTime将采用奇怪的格式,如

\/Date(1297367252340-0500)\/

日期是这种奇怪格式的原因是DateTime是WCF中的原语。不幸的是,在JSON中没有用于序列化日期和时间的通用标准化格式 - 各种框架使用各种字符串格式。

困境是WCF需要本地理解通过线路的特定字符串确实是DateTime,而不仅仅是另一个普通的香草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,虽然名称可能已更改)。它的反序列化函数也会自动解析这些日期。

希望有所帮助!