CamelCase 无法在 net core 6 Web api 中工作

Jos*_*cia 7 c# asp.net-core-webapi system.text.json asp.net-core-6.0

我已将 Web api 应用程序从 net core 5 迁移到 6,并通过 System.Text.Json 更改了 NewtonSoft 序列化程序。在我的 Startup.cs 中,我使用以下代码配置了 Json 序列化:

services.AddControllers(config =>
{
    config.RespectBrowserAcceptHeader = true;
    config.ReturnHttpNotAcceptable = true;
})
.AddJsonOptions(options =>
{
    options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    options.JsonSerializerOptions.WriteIndented = true;
})
.AddXmlDataContractSerializerFormatters();
Run Code Online (Sandbox Code Playgroud)

该代码仅部分有效。WriteIndented 工作正常(请参见下面的屏幕截图),但我无法让驼峰式工作。

在此输入图像描述

有什么建议么?问候

Nec*_*maz 5

经过多次尝试我解决了这个问题。在最新版本中,“BaseController”没有默认问题,但“ODataController”有同样的问题。

解决办法是;

services
.AddControllers(opt => opt.Filters.Add(typeof(ValidateModelAttribute)))
.AddJsonOptions(o => {
   o.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
   o.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
   o.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
   o.JsonSerializerOptions.WriteIndented = true;
})
.AddOData(options => options.Select().Expand().Filter().OrderBy().SetMaxTop(32).Count());
Run Code Online (Sandbox Code Playgroud)

阅读有关文档的更多详细信息。

  • 我一定错过了一些东西......我在这里看不到答案。 (3认同)