C# IsoDateTimeConverter和JsonSerializerSettings:使用DateTimeOffset区分DateTime
在我的C#模型中,我同时使用C# IsoDateTimeConverter和JsonSerializerSettings:使用DateTimeOffset区分DateTime,c#,datetimeoffset,jsonserializer,C#,Datetimeoffset,Jsonserializer,在我的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.Cre
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"
}
{
Date = "2019-02-26",
CreationDate = "2019-02-26T12:03:00-03:00"
}
由于IsoDateTimeConverter
我想做的是区分DateTime
和DateTimeOffset
的序列化
我的目标是得到这个JSON:
{
Date = "2019-02-26",
CreationDate = "2019-02-26"
}
{
Date = "2019-02-26",
CreationDate = "2019-02-26T12:03:00-03:00"
}
我怎样才能做到这一点
其他信息:
- 当我的C#model使用
时,我将其保存为SQL Server中的DateTime
Date
- 当我的C#model使用
时,我将其保存为SQL Server中的DateTimeOffset
DateTimeOffset
- 我先用EF代码
- 你可以试试这个
public class DateFormatConverter : IsoDateTimeConverter
{
public DateFormatConverter(string format)
{
DateTimeFormat = format;
}
}
为每个日期属性指定格式
public class Foo
{
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-dd")]
public DateTime Date { get; set; }
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-ddTHH:mm:ssK")]
public DateTimeOffset CreationDate { get; set; }
}
无需其他设置,您可以序列化
Foo foo = new Foo();
foo.Date = DateTime.UtcNow;
foo.CreationDate = DateTime.UtcNow;
string isoJson = JsonConvert.SerializeObject(foo);
输出
{"Date":"2020-02-26","CreationDate":"2020-02-26T15:30:19-03:00"}
它正在抛出:JsonconverterAttribute不包含采用2个参数的构造函数
通过将Newtonsoft.Json从5.0.8更新为12.0.3Perfect解决了上述错误