ASP.NET Core 3.1 在返回响应正文时忽略 System.Text.Json.JsonPropertyName

ASP.NET Core 3.1 ignoring System.Text.Json.JsonPropertyName when returning response body

我最近将我的 ASP.NET 核心应用程序从 2.2 更改为目标 3.1。我还从使用 Newtonsoft 进行 JSON 序列化更改为 System.Text.Json。在此过程中,我更改了许多响应 class 属性以使用 JsonPropertyNameAttribute(来自 Newtonsoft JsonPropertyAttribute)。

但是,我现在注意到应用程序忽略了 JsonPropertyNameAttribute 并将 属性 名称序列化为驼峰式大小写。

例如:

[JsonPropertyName("handsets")]
public IEnumerable<GetHandsetResponse> AllHandsets { get; set; }

响应对象字段在响应中输出为 allHandsets,而不是 JsonPropertyName 指定的 handsets

我猜我在应用程序的 Startup.cs 中遗漏了一些东西,告诉它使用 System.Text.Json 但我不知道是什么。我可能遗漏了什么?

似乎在从 Startup.cs 调用的公共代码的深处 - 应用程序的 ConfigureServices() 有一个对 .AddNewtonsoftJson() 的调用(在返回的 IMvcBuilder 类型上)。删除该方法调用似乎可以正确地将应用程序恢复为使用 System.Text.Json 序列化程序。