【发布时间】:2020-06-10 12:00:40
【问题描述】:
在我的 C# 模型中,我同时使用 DateTime 和 DateTimeOffset,例如:
class Foo
{
public DateTime Date { get; set; }
public DateTimeOffset CreationDate { get; set; }
}
当我序列化为 JSON 时,我会这样做:
Foo foo = new Foo();
foo.Date = DateTime.UtcNow;
foo.CreationDate = DateTime.UtcNow;
var isoDateTimeConverter = new IsoDateTimeConverter();
isoDateTimeConverter.DateTimeFormat = "yyyy'-'MM'-'dd";
var serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(isoDateTimeConverter);
JsonSerializer serializer = JsonSerializer.Create(serializerSettings);
serializer.Serialize(writer, foo);
这将产生这个 JSON:
{
Date = "2019-02-26",
CreationDate = "2019-02-26"
}
由于IsoDateTimeConverter,Date 和 CreationDate 都以相同的方式序列化
我想做的是区分DateTime和DateTimeOffset的序列化
我的目标是得到这个 JSON:
{
Date = "2019-02-26",
CreationDate = "2019-02-26T12:03:00-03:00"
}
我怎样才能做到这一点?
附加信息:
- 当我的 C# 模型使用
DateTime时,我在 SQL Server 中将其另存为Date - 当我的 C# 模型使用
DateTimeOffset时,我在 SQL Server 中将其另存为DateTimeOffset - 我使用的是 EF 代码优先
【问题讨论】:
标签: c# datetimeoffset jsonserializer