2014-09-22 48 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; 
    } 

现在它运行平稳。

相关问题