我有这门课:
private class SimpleClass
{
public DateTimeOffset Date;
}
当我尝试在.NET 3.5上通过JavaScriptSerializer序列化它时结果是遵循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);
谢谢你的任何想法 .
1 回答
更大的问题是当您序列化Date值并将其反序列化时,您丢失了DateTimeOffset,而Deserialized值是UTC时间 . 那么让我们从开始,你使用什么样的串行器/解串器? .Net / Json.Net / LightJson / ...