使用 Utf8Json 指定 serializing/deserializing 时的 Epoch TimeDate 格式
Specify Epoch TimeDate Format when serializing/deserializing with Utf8Json
我找不到足够的信息来了解如何在使用 utf8json 进行序列化和反序列化期间处理 DateTimeOffset 和 TimeSpan。我可以找到有关 IJsonFormatter 的信息,但找不到如何正确实现它的信息..
我的示例 Class 如下所示:
public MyClass()
{
// This should be converted during serializing/deserializing to Unix TimeStamp in Milliseconds
[JsonFormatter(typeof[CustomDateTimeConverter())]
public DateTimeOffSet? BeginDate { get; set; }
// This should be converted to TotalMilliseconds
public TimeSpan? Elapsed { get; set; }
}
我有一个函数可以将日期时间从这个 post 转换为 EpochTimeStamp:How to get the unix timestamp in C#
我尝试将 [JsonFormatter(typeof[CustomDateTimeConverter())] 添加到数据成员 BeginDate,但需要正确实现它..
public class CustomDateTimeConverter : IJsonFormatter
{
public CustomDateTimeConverter()
{
// convert DateTime to Unix Milliseconds for Serialzing
}
}
还是我走错了路?我怎样才能做到这一点?
谢谢您的帮助!
我的解决方案在不使用 IJsonFormatter 的情况下扩展了我的 class。
Class 现在看起来像这样:
public MyClass()
{
[IgnoreDataMember]
// This field will be used internally
public DateTimeOffSet? BeginDate { get; set; }
[DataMember(Name = "beginDate")]
// This will be used for serialzing/deserialising to Unix TimeStamp in Milliseconds
public long BeginDateEpoch
{
get { return ((DateTimeOffset)BeginDate.GetValueOrDefault()).ToUnixTimeMilliseconds(); }
set { BeginDate= new DateTimeOffset(DateTimeOffset.FromUnixTimeMilliseconds(value).DateTime.ToLocalTime()); }
}
[IgnoreDataMember]
public TimeSpan? Elapsed { get; set; }
[DataMember(Name = "elapsed")]
public double ElapsedEpoch
{
get { return Elapsed.GetValueOrDefault().TotalMilliseconds; }
set { Elapsed = TimeSpan.FromMilliseconds(value); }
}
}
我找不到足够的信息来了解如何在使用 utf8json 进行序列化和反序列化期间处理 DateTimeOffset 和 TimeSpan。我可以找到有关 IJsonFormatter 的信息,但找不到如何正确实现它的信息..
我的示例 Class 如下所示:
public MyClass()
{
// This should be converted during serializing/deserializing to Unix TimeStamp in Milliseconds
[JsonFormatter(typeof[CustomDateTimeConverter())]
public DateTimeOffSet? BeginDate { get; set; }
// This should be converted to TotalMilliseconds
public TimeSpan? Elapsed { get; set; }
}
我有一个函数可以将日期时间从这个 post 转换为 EpochTimeStamp:How to get the unix timestamp in C#
我尝试将 [JsonFormatter(typeof[CustomDateTimeConverter())] 添加到数据成员 BeginDate,但需要正确实现它..
public class CustomDateTimeConverter : IJsonFormatter
{
public CustomDateTimeConverter()
{
// convert DateTime to Unix Milliseconds for Serialzing
}
}
还是我走错了路?我怎样才能做到这一点?
谢谢您的帮助!
我的解决方案在不使用 IJsonFormatter 的情况下扩展了我的 class。 Class 现在看起来像这样:
public MyClass()
{
[IgnoreDataMember]
// This field will be used internally
public DateTimeOffSet? BeginDate { get; set; }
[DataMember(Name = "beginDate")]
// This will be used for serialzing/deserialising to Unix TimeStamp in Milliseconds
public long BeginDateEpoch
{
get { return ((DateTimeOffset)BeginDate.GetValueOrDefault()).ToUnixTimeMilliseconds(); }
set { BeginDate= new DateTimeOffset(DateTimeOffset.FromUnixTimeMilliseconds(value).DateTime.ToLocalTime()); }
}
[IgnoreDataMember]
public TimeSpan? Elapsed { get; set; }
[DataMember(Name = "elapsed")]
public double ElapsedEpoch
{
get { return Elapsed.GetValueOrDefault().TotalMilliseconds; }
set { Elapsed = TimeSpan.FromMilliseconds(value); }
}
}