有没有办法在使用JSON.NET的反序列化过程中将JSON中的ISO日期时间字符串自动转换为double值(比如epoch秒)。
我们说我有一个类似下面的课程。
public class Announcement
{
public string Id { get; set; }
public string Name {get; set;}
public double CreatedDateTime {get;set;}
}
我希望以下JSON中的ISO datetime(createdDateTime)自动转换为CreatedDateTimeMS。
{"id": 123, "name": "new announcement", "createdDateTime": "2014-01-05T13:15:30Z"}
答案 0 :(得分:2)
如果您有一个单独的属性来呈现转换后的值并使用ScriptIgnore属性对其进行修饰以使其远离JSON数据,那么使用JSON序列化程序可以减少对战。
public class MyClass
{
private static readonly DateTime _epoch = new DateTime(1970, 1, 1);
public DateTime MyDate { get; set; }
[ScriptIgnore]
public double EpochSeconds
{
get { return (MyDate - _epoch).TotalSeconds; }
set { MyDate = _epoch.AddSeconds(value); }
}
}
使用此方法,您可以使用MyDate或EpochSeconds来获取和设置值,但它始终会被序列化为JSON中的日期时间。如果您希望将其序列化为秒,则只需移动属性。