JavaScriptSerializer不能识别日期字符串为DateTime
本文关键字:DateTime 字符串 日期 不能 识别 JavaScriptSerializer | 更新日期: 2023-09-27 18:11:04
这是我的模型:
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'"}"
-
不要使用
JavaScriptSerializer
,使用Json。净。 -
不要在JSON中使用特定于语言环境的格式,如
MM/dd/yyyy
或dd/MM/yyyy
。例如,1/4/2013
是否代表四月的第一天?或者是一月的第四天?没有办法知道。 -
使用ISO8601格式代替。它是文化不变的,所以没有歧义。在ISO格式中,您有
2013-01-04
,它总是yyyy-mm-dd
,因此没有歧义。例如,完整的日期时间为2013-01-04T05:30:27.123
。 -
来自c#,使用
DateTime.ToString("o")
来获得此格式-或者仅使用Json。使用ISO格式自动序列化DateTime
和DateTimeOffset
。