JavaScriptSerializer不会将日期字符串识别为DateTime?

时间:2013-04-25 14:28:53

标签: c# javascript

这是我的模特:

public class ReportAllMediaDetailsParams
    {
        public int profileID  { get; set; }
        public int organisationID { get; set; }
        public DateTime startDate { get; set; }
        public DateTime endDate { get; set; }
}

这是我的解串器:

var serializer = new JavaScriptSerializer();
var reportParams = serializer.Deserialize<ReportAllMediaDetailsParams>(json);

来自json的日期是:

"{\"profileID\":\"41\",\"organisationID\":\"2252\",\"startDate\":\"01/01/1970\",\"endDate\":\"01/01/1970\"}"

1 个答案:

答案 0 :(得分:3)

  • 请勿使用JavaScriptSerializer,而是使用Json.Net

  • 请勿在JSON中使用特定于语言环境的格式,例如MM/dd/yyyydd/MM/yyyy。例如,1/4/2013代表4月的第一天吗?还是一月的第四天?没有办法知道。

  • 请改用ISO8601格式。它是文化不变的,所以没有歧义。 在ISO格式中,您有2013-01-04总是 yyyy-mm-dd,因此没有歧义。例如,完整的日期时间为2013-01-04T05:30:27.123

  • 来自C#,使用DateTime.ToString("o")获取此格式 - 或者只使用Json.Net,它会使用ISO格式自动序列化DateTimeDateTimeOffset