.NET 3.5 JavaScriptSerializer和DateTimeOffset序列化

.NET 3.5 JavaScriptSerializer和DateTimeOffset序列化,.net,json,serialization,.net-3.5,javascriptserializer,.net,Json,Serialization,.net 3.5,Javascriptserializer,我有这门课: private class SimpleClass { public DateTimeOffset Date; } 当我尝试在.NET 3.5上通过JavaScriptSerializer对其进行序列化时,结果如下所示: "{\"Date\":{\"DateTime\":\"\\/Date(1377674408500)\\/\",\"UtcDateTime\":\"\\/Date(1377674408500)\\/\",\"LocalDateTime\":\"\\/Dat

我有这门课:

private class SimpleClass
{
    public DateTimeOffset Date;
}
当我尝试在.NET 3.5上通过JavaScriptSerializer对其进行序列化时,结果如下所示:

"{\"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)\\/\"}"
可以反序列化这个结果

这给我带来了一个大问题,因为我有一个用.NET3.5编写的客户端,我需要在用.NET4编写的服务器端反序列化结果

下面是用于序列化和反序列化的代码:

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);
JavaScriptSerializer serializer=新的JavaScriptSerializer();
DateTime dt=DateTime.Now;
SimpleClass实例=新建SimpleClass();
实例.Date=dt;
字符串jsonStr=serializer.Serialize(实例);
SimpleClass newInstance=serializer.Deserialize(jsonStr);

谢谢你的建议。

更大的问题是当你序列化日期值并反序列化回来时,你丢失了DateTimeOffset,反序列化的值是UTC时间。 那么让我们从一开始,您使用哪种序列化器/反序列化器?
.Net/Json.Net/LightJson/

如您所见,他使用的是JavaScriptSerializer,一个内置的.NET类:)