如何配置ASP.NET Web服务只发送的DateTimeOffset对象的LocalDateTime属性作为JSON?
-
21-09-2019 - |
题
我有在它的几个的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格式,这应该对你的客户群没有影响。
与系统生成的类疼痛的种类,但你需要替换自己的类来获取序列化输出的控制。
不隶属于 StackOverflow