这是我的模特:
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\"}"
答案 0 :(得分:3)
请勿使用JavaScriptSerializer
,而是使用Json.Net。
请勿在JSON中使用特定于语言环境的格式,例如MM/dd/yyyy
或dd/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格式自动序列化DateTime
和DateTimeOffset
。