从 System.Text.Json 反序列化 NodaTime Instant

k3d*_*vis 2 c# nodatime asp.net-core

我在 ASP.NET Core 项目和包含两个Instant属性的模型中使用 Noda Time 。

public class Template
{
    //... redacted bits

    public Instant CreateDt { get; set; }
    public Instant LastmodDt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

数据库中的信息正如我所期望的“开箱即用”。但是通过 API取回值会返回空对象属性,如下所示:

{
    //... redacted bits

    "createDt": {},
    "lastmodDt": {}
}
Run Code Online (Sandbox Code Playgroud)

我如何取回我输入的相同日期,或者至少可以输入一些数据?

FWIW 我使用 ASP.NET Core 3.1,默认 System.Text.Json(不是 JSON.NET)。

编辑:删除了与问题无关的关于 PostgreSQL 的虚假注释。

k3d*_*vis 6

通过安装NodaTime.Serialization.SystemTextJson软件包并将其添加到我的Startup.cs

services.AddControllers()
    // the added bit:
    .AddJsonOptions(opt => opt.JsonSerializerOptions.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb));
Run Code Online (Sandbox Code Playgroud)

我不得不从 github 上发现的其他用途中对其进行逆向工程,因为我正在查看 NodaTime 用户指南的错误版本,就像一个傻瓜。干杯。