【问题标题】:WCF RESTful passing JSON Datetime always nullWCF RESTful 传递 JSON 日期时间始终为空
【发布时间】:2014-06-26 09:23:31
【问题描述】:

我使用 .NET WCF + RESTful 开发服务,使用 WizTools.org RESTClient 进行测试。 我在从客户端接收 JSON 日期时间时遇到问题。它们总是 DateTime.MinValue。

这是我的数据合同

   [DataContract(Name = "origin")]
        public class OriginObject
        {
            [DataMember(Name = "airport")]
            public string Airport { get; set; }

            [DataMember(Name = "oddt")]
            public DateTime Oddt { get; set; }

            [DataMember(Name = "eddt")]
            public DateTime Eddt { get; set; }
        }

        [DataContract(Name = "destination")]
        public class DestinationObject
        {
            [DataMember(Name = "airport")]
            public string Airport { get; set; }

            [DataMember(Name = "odat")]
            public DateTime Odat { get; set; }

            [DataMember(Name = "edat")]
            public DateTime Edat { get; set; }
        }

这是我的测试 JSON(请忽略“酸”,只忽略“目的地”和“原点”)

{
    "acid" : "AAA1",
    "destination" : {
        "airport" : "VVVV",
        "eddt" : "2013-03-05T20:20:31.000Z",
        "oddt" : "/Date(1362489941)/"
    },
    "flightPlanState" : "ACTIVE",
    "origin" : {
        "airport" : "XXXX",
        "edat" : "\/Date(1362499081)\/",
        "odat" : "1362498721"
    }
}

上述所有 4 种日期时间样式都是代码隐藏中的最小值(只是日期时间,两个“机场”字段都有正常值)。

【问题讨论】:

  • DateTime 是一个值类型。不能为空。
  • 谢谢@L.B.正如你所说,它们不是空的。它们都是 01-01-01T00:00:00。

标签: c# json wcf rest datetime


【解决方案1】:

DateTime 没有用 Json 很好地定义,尽管“eddt”值看起来像一个应该可以被通用 .Net Json 序列化器解析的值。

我的建议是使用字符串属性,并添加额外的 GetOddt() 等函数,将字符串值解析为 DateTime 值;如果需要,还可以添加 SetOddt() 等函数,不要忘记更新相应的字符串值!

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多