我使用Fiddler来测试我的WCF Rest。我总是得到
HTTP/1.1 400 Bad Request
有这个帖子值:
{
"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"
}
]
}
我在“持续时间”值中收到错误。我一直在网上搜索但没有运气。
我希望我能在这里找到答案。非常感谢!
答案 0 :(得分:4)
简单的方法是将时间跨度解析为字符串,并使用其静态“解析”例程转换为TimeSpan。
使用JSON和WCF,你依靠JSON Serialiser来来回转换对象,不幸的是,一旦你开始“移动”本地对象类型,即字符串,数字和特定对象,它往往会窒息,除非你使用确切的格式。
就个人而言,我没有通过DataContractJsonSerializer传递Timespan的经验,但是this post将突出显示确切的格式以及是否可能
答案 1 :(得分:-1)
什么是“sub”的.NET类型?它看起来像某种类型的集合或数组类型; .NET期望这些元素具有什么类型?该类型是否具有Type,StartDate,EndDate和Duration属性?它是否有任何标有[IsRequiredAttribute]但不存在的其他属性?
如果你制作一个新的DataContractJsonSerializer(type = TimeSpan),并尝试反序列化字符串“12:12:12”,那么会发生什么?
我还没有给你答案 - 但我认为做这些练习现在不能解决你的问题,但它也有助于诊断你在反序列化这个字符串时可能遇到的未来错误。
另请参阅Deserialize array values to .NET properties using DataContractJsonSerializer了解一些指示