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 工作正常(请参见下面的屏幕截图),但我无法让驼峰式工作。
有什么建议么?问候
经过多次尝试我解决了这个问题。在最新版本中,“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)
阅读有关此文档的更多详细信息。