问题描述
我在ASP.NET Core项目和包含两个Instant
属性的模型中使用Noda Time。
public class Template
{
//... redacted bits
public Instant CreateDt { get; set; }
public Instant LastmodDt { get; set; }
}
数据库中的信息符合我的预期。但是,通过API 获取值将返回空对象属性,如下所示:
{
//... redacted bits
"createDt": {},"lastmodDt": {}
}
我该如何找回与我输入日期相同的日期,或者至少可以获取一些数据?
FWIW我正在使用ASP.NET Core 3.1,默认使用System.Text.Json(不是JSON.NET)。
编辑:删除了有关Postgresql的虚假注释,这些注释原来与该问题无关。
解决方法
通过安装NodaTime.Serialization.SystemTextJson
软件包并将其添加到我的Startup.cs
中,我能够通过注释中提到的帮助解决此问题:
services.AddControllers()
// the added bit:
.AddJsonOptions(opt => opt.JsonSerializerOptions.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb));
我不得不对github上的其他用途进行反向工程,因为我在看NodaTime的用户指南的错误版本,例如doofus。干杯。