从System.Text.Json

问题描述

我在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。干杯。