2014-09-22 37 views
1

我目前使用的是DataContractJsonSerializer類,但我無法將日期如12/19/2013 12:00:00 AM轉換爲C#DateTime對象。如何使用DataContractJsonSerializer序列化「2013年12月19日12:00:00 AM」在C#上的DateTime類型

是我得到的錯誤說:

有反序列化 型Uptivity.achievement的對象錯誤。 DateTime content '12/19/2013 12:00:00 AM' 不是以JSON所需的'Date('和以')'結尾開始。

在:

public static T DeserializeJSon<T>(string jsonString) 
    { 

     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); 
     MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 
     T obj = (T)ser.ReadObject(stream); 
     return obj; 
    } 

我一直在試圖定義日期時間格式是這樣的:

 public static T DeserializeJSon<T>(string jsonString) 
    { 

     var settings = new DataContractJsonSerializerSettings 
     { 
      DateTimeFormat = new System.Runtime.Serialization.DateTimeFormat("G") 
     }; 

     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T),settings); 
     MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 
     T obj = (T)ser.ReadObject(stream); 
     return obj; 
     } 

但現在我收到:

有錯誤反序列化 Uptivity.achievement類型的對象。字符串未被識別爲有效的日期時間。

另外這個12/19/2013 12:00:00 AM格式如Date是JSON提供者正在傳遞的格式。

任何想法?

+0

這將有助於如果你包括你已經嘗試過。您是否嘗試更正此問題:'/ Date('並以')/'結尾,如JSON所需。 – LVBen 2014-09-22 18:37:04

+0

謝謝,我將盡快更新我的文章。 – user3149931 2014-09-22 18:39:27

+0

http://stackoverflow.com/questions/14640096/datacontractjsonserializer-date-serialization – MethodMan 2014-09-22 18:39:29

回答

2

一些故障排除我想出這個作爲我的解決方案後:

使用System.Web.Script.Serialization;

public static T DeserializeJSon<T>(string jsonString) 
    { 

     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     T obj = ser.Deserialize<T>(jsonString); 

     return obj; 
    } 

現在它運行平穩。

相關問題