我有在它的几个的DateTimeOffset属性一堆实体类(由LINQ的生成SQL)的。

当我发送在从的.asmx web服务的导线作为JSON,所述JSON序列生成以下JSON:

{"DateTime":"\/Date(1252142834307)\/",
 "UtcDateTime":"\/Date(1252142834307)\/",
 "LocalDateTime":"\/Date(1252142834307)\/",
 "Date":"\/Date(1252101600000)\/",
 "Day":5,
 "DayOfWeek":6,
 "DayOfYear":248,
 "Hour":11,
 "Millisecond":307,
 "Minute":27,
 "Month":9,
 "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":14,
 "Ticks":633877468343070254,
 "UtcTicks":633877396343070254,
 "TimeOfDay":{"Ticks":412343070254,
              "Days":0,
              "Hours":11,
              "Milliseconds":307,
              "Minutes":27,
              "Seconds":14,
              "TotalDays":0.47724892390509255,
              "TotalHours":11.453974173722221,
              "TotalMilliseconds":41234307.025400005,
              "TotalMinutes":687.23845042333335,
              "TotalSeconds":41234.3070254},
 "Year":2009}
}

我非常想节省带宽和JSON解析时间的客户端。我也很喜欢,以避免在发送它关闭到Web服务之前手动项目的每个单一的DateTimeOffset。

我意识到JSON序列做,因为它是假设,所以我的问题是:有没有一种方法来配置JSON序列化,使其仅仅发送的DateTimeOffset对象的LocalDateTime属性

谢谢,埃吉尔。

有帮助吗?

解决方案

修改对象序列输出需要您覆盖序列化方法为的DateTimeOffset对象。由于的DateTimeOffset是BCL的一部分,你不能这样改写自己。

最简单的解决办法是创建自定义对象实现的DateTimeOffset,允许你从ISerializable接口重写GetObjectData使用。您的webmethod需要来回报您的自定义对象,而不是的DateTimeOffset对象,但如果这个Web服务的消费是JSON格式,这应该对你的客户群没有影响。

与系统生成的类疼痛的种类,但你需要替换自己的类来获取序列化输出的控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top