如何以JSON格式传递TimeSpan值?

我用Fiddler测试我的WCF Rest。 我总是得到

HTTP/1.1 400 Bad Request 

有这个post值:

 { "session":{ "Session":"088a688d-ea69-4264-9266-381e9e540d00", "LoginID":"testid", "Serial":"testserial" }, "sub":[ { "Type":0, "StartDate":"\/Date(1319731200000+0800)\/", "EndDate":"\/Date(1319731200000+0800)\/", "Duration":"12:12:12" } ] } 

我在’持续时间’值中得到错误。 我一直在网上搜索但没有运气。
我希望我能在这里找到答案。 非常感谢!

简单的方法是将时间跨度解析为字符串,并使用其静态“解析”例程转换为TimeSpan。

使用JSON和WCF,您依靠JSON Serialiser来来回转换对象,不幸的是,一旦您开始“移动”远离本机对象类型(即字符串,数字和特定对象),除非您使用精确对象,否则它往往会窒息格式。

就个人而言,我没有通过DataContractJsonSerializer传递Timespan的经验需要什么格式,但是这篇文章将突出显示确切的格式以及是否可能

什么是.NET类型的“子”? 它看起来像某种类型的集合或数组类型; .NET期望这些元素具有什么类型? 该类型是否具有Type,StartDate,EndDate和Duration属性? 它是否有任何标有[IsRequiredAttribute]但不存在的其他属性?

如果你制作一个新的DataContractJsonSerializer(type = TimeSpan),并尝试反序列化字符串“12:12:12”,那么会发生什么?

我还没有给你答案 – 但我认为做这些练习现在不能解决你的问题,但它也有助于诊断你在反序列化这个字符串时可能遇到的未来错误。

另请参阅使用DataContractJsonSerializer将数组值反序列化为.NET属性以获取某些指针