2013-08-28 30 views
0

我有這個類:.NET 3.5 JavaScriptSerializer和系列化的DateTimeOffset

private class SimpleClass 
{ 
    public DateTimeOffset Date; 
} 

,當我嘗試通過JavaScriptSerializer在.NET 3.5的結果序列化是以下JSON:

"{\"Date\":{\"DateTime\":\"\\/Date(1377674408500)\\/\",\"UtcDateTime\":\"\\/Date(1377674408500)\\/\",\"LocalDateTime\":\"\\/Date(1377674408500)\\/\",\"Date\":\"\\/Date(1377640800000)\\/\",\"Day\":28,\"DayOfWeek\":3,\"DayOfYear\":240,\"Hour\":9,\"Millisecond\":500,\"Minute\":20,\"Month\":8,\"Offset\":{\"Ticks\":72000000000,\"Days\":0,\"Hours\":2,\"Milliseconds\":0,\"Minutes\":0,\"Seconds\":0,\"TotalDays\":0.083333333333333329,\"TotalHours\":2,\"TotalMilliseconds\":7200000,\"TotalMinutes\":120,\"TotalSeconds\":7200},\"Second\":8,\"Ticks\":635132784085002695,\"UtcTicks\":635132712085002695,\"TimeOfDay\":{\"Ticks\":336085002695,\"Days\":0,\"Hours\":9,\"Milliseconds\":500,\"Minutes\":20,\"Seconds\":8,\"TotalDays\":0.38898727163773145,\"TotalHours\":9.3356945193055552,\"TotalMilliseconds\":33608500.2695,\"TotalMinutes\":560.14167115833334,\"TotalSeconds\":33608.5002695},\"Year\":2013}}" 

它是不可能將結果反序列化。

當我與.NET 4.0的結果同樣是剛:

"{\"Date\":\"\\/Date(1377675074146)\\/\"}" 

,則有可能反序列化這個結果。

這引起了我很大的問題,因爲我有這是寫在.NET 3.5客戶端,我需要寫在.NET 4

只是要完成這裏的服務器端反序列化的結果是代碼序列化和反序列化:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 

DateTime dt = DateTime.Now; 
SimpleClass instance = new SimpleClass(); 
instance.Date = dt; 

string jsonStr = serializer.Serialize(instance); 

SimpleClass newInstance = serializer.Deserialize<SimpleClass>(jsonStr); 

感謝您的任何想法。

回答

0

更大的問題是,當您序列化Date值並反序列化它時,您丟失了DateTimeOffset並且反序列化的值是UTC時間。因此,讓我們從開始開始,您使用什麼樣的串行器/解串器? .Net/Json.Net/LightJson/...