0

我有这堂课:

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);

感谢您的任何想法。

4

1 回答 1

0

更大的问题是当您序列化 Date 值并将其反序列化时,您丢失了 DateTimeOffset 并且 Deserialized 值是 UTC 时间。那么让我们从头开始,您使用什么样的序列化器/反序列化器?.Net / Json.Net / LightJson / ...

于 2014-04-05T09:35:43.267 回答