.Net Core NewtonsoftJson DateTimeZoneHandling 设置不起作用
.Net Core NewtonsoftJson DateTimeZoneHandling setting not working
我开始在工作中将我们的 .Net Framework WebAPI 移植到 .Net Core 5。我注意到 SPA 中返回的日期已关闭,经过进一步调查,我发现在对象被序列化后,日期被设置为 UTC。
我发现我可以通过添加选项作为参数让它在 serialization/deserialization 工作,但看起来这应该能够在全局范围内完成,而不是每次序列化程序运行时。
我尝试在 WebAPI Startup.cs 中添加以下内容来更改返回日期的方式,但它似乎在启动时不起作用:
services.AddControllers().AddNewtonsoftJson(o => o.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified);
添加这个:
services.AddControllers().AddNewtonsoftJson();
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Unspecified
};
我必须转换为 UTC 格式(DateTimeZoneHandling.Utc),而上述方法 (DateTimeZoneHandling) 对我不起作用。终于在下面工作了:
.AddNewtonsoftJson(opts =>
{
opts.SerializerSettings.Converters.Add(new IsoDateTimeConverter
{
DateTimeStyles = DateTimeStyles.AdjustToUniversal
});
}
我希望这对希望在全球范围内将日期时间格式转换为 UTC 的人有所帮助。
我开始在工作中将我们的 .Net Framework WebAPI 移植到 .Net Core 5。我注意到 SPA 中返回的日期已关闭,经过进一步调查,我发现在对象被序列化后,日期被设置为 UTC。
我发现我可以通过添加选项作为参数让它在 serialization/deserialization 工作,但看起来这应该能够在全局范围内完成,而不是每次序列化程序运行时。
我尝试在 WebAPI Startup.cs 中添加以下内容来更改返回日期的方式,但它似乎在启动时不起作用:
services.AddControllers().AddNewtonsoftJson(o => o.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified);
添加这个:
services.AddControllers().AddNewtonsoftJson();
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Unspecified
};
我必须转换为 UTC 格式(DateTimeZoneHandling.Utc),而上述方法 (DateTimeZoneHandling) 对我不起作用。终于在下面工作了:
.AddNewtonsoftJson(opts =>
{
opts.SerializerSettings.Converters.Add(new IsoDateTimeConverter
{
DateTimeStyles = DateTimeStyles.AdjustToUniversal
});
}
我希望这对希望在全球范围内将日期时间格式转换为 UTC 的人有所帮助。