【问题标题】:Deserialize DateTime From C# CLR从 C# CLR 反序列化 DateTime
【发布时间】:2014-07-15 13:39:38
【问题描述】:

我的 CLR 类中有一个 json 字符串,如下所示:

string parameteres = "{\"Parameter\":{\"personId\":\""+PersonId.ToString()+"\",\"date\":\""+Date.Value+"\"}}";

CLR 类调用 REST api 并将参数传递给它。 在我的 REST api 中,我像这样反序列化参数:

JObject enterddata = JObject.Parse(jsoninput);
        string jsonparam = enterddata["Parameter"].ToString();
        var personId = new Guid();
        var date = new DateTime();
        try
        {
            JObject data = JObject.Parse(jsonparam);
            personId = new Guid(data["personId"].ToString());

            date = (DateTime)data["date"];

           //Other Codes Goes Here
        }
        catch (Exception ex)
        {

        }

当我到达这条线时:

date = (DateTime)data["date"]; 

发生异常并且未将其转换为 DateTime。我怎样才能让它发挥作用?

【问题讨论】:

    标签: c# .net datetime clrstoredprocedure


    【解决方案1】:

    在这种情况下,您必须指定正确的日期格式,ISO 应该这样做

    string parameteres = string.Format"{\"Parameter\":{\"personId\":\"{0}\",\"date\":\"{1:yyyy-MM-dd HH:mm:ss}\"}}",PersonId,Date.Value);
    

    【讨论】:

    • JSON 中的日期没有标准,有时这很痛苦。使用 ISO 就像是一种约定,但您不能确定每个日期都是 ISO 格式。
    • datetime 的格式是什么?如您所见,我有日期时间,时间部分与日期部分一样重要
    • @Shahram 添加了时间部分。
    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多