【问题标题】:How to serialize "12/19/2013 12:00:00 AM" to DateTime Type on C# using DataContractJsonSerializer如何使用 DataContractJsonSerializer 在 C# 上将“12/19/2013 12:00:00 AM”序列化为 DateTime 类型
【发布时间】:2014-09-22 18:35:05
【问题描述】:

我目前正在使用 DataContractJsonSerializer 类,但我无法将 12/19/2013 12:00:00 AM 之类的日期转换为 C# DateTime 对象。

我得到的错误是:

反序列化类型对象时出错 Uptivity.成就。 DateTime 内容 '12/19/2013 12:00:00 AM' 确实 不是 JSON 要求的以 'Date(' 开头并以 ')' 结尾。

在:

    public static T DeserializeJSon<T>(string jsonString)
    {

        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(stream);
        return obj;
    }

我一直在尝试这样定义日期时间格式:

     public static T DeserializeJSon<T>(string jsonString)
     {

       var settings = new DataContractJsonSerializerSettings
        {
            DateTimeFormat = new System.Runtime.Serialization.DateTimeFormat("G")
        };

        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T),settings);
        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(stream);
        return obj;
      }

但现在我收到了:

反序列化类型对象时出错 Uptivity.成就。字符串未被识别为有效的日期时间。

此外,像 Date 这样的 12/19/2013 12:00:00 AM 格式是 json 提供程序提供的格式。

有什么想法吗?

【问题讨论】:

  • 如果您包含您尝试过的内容会有所帮助。您是否尝试过更正此问题:'/Date(' 并以 ')/' 作为 JSON 的要求结尾。
  • 谢谢,我会尽快更新我的帖子。

标签: c# json datacontractserializer


【解决方案1】:

经过一些故障排除后,我想出了这个作为我的解决方案:

使用 System.Web.Script.Serialization;

    public static T DeserializeJSon<T>(string jsonString)
    {

        JavaScriptSerializer ser = new JavaScriptSerializer();
        T obj = ser.Deserialize<T>(jsonString);

        return obj;
    }

现在运行顺利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2015-11-05
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多