gpt4 book ai didi

c# - 如何在使用 MinimalApi 时配置 json 名称大小写策略

转载 作者:行者123 更新时间:2023-12-03 07:59:25 32 4
gpt4 key购买 nike

我正在尝试从在我的 MVC Web 应用程序的端点中配置的最小 API 获取结果我的 Get 操作配置如下:

            endpoints.MapGet(
"HO-CFDZU4/api/Currency/Get",
[PermissionAuthorize(PermissionName.ReadCurrencyDictionary)]
async ([FromServicesAttribute] CurrencyService curency) =>
{
var result = await DataSourceLoader.LoadAsync(curency.Get(), new DataSourceLoadOptions());

return Results.Ok(result);
});

结果我得到了对象的响应,其中属性名称更改为小写,但它不适合我。我想在相同的情况下获得完全相同的名称,就像我返回表单操作一样。

为了在 MVC 中获得类似的效果,我使用了以下代码:

            services
.AddMvc()
.AddFluentValidation(x => x.RegisterValidatorsFromAssembly(AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName.Contains("ApplicationCore")).Single()))
.AddMvcLocalization()
.AddMvcOptions(options =>{})
.AddRazorRuntimeCompilation()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
});

在 Controller 中使用操作时为 Json 设置属性命名策略,但我不知道如何为minimalApi 设置相同的策略。

我尝试过设置[JsonPropertyName(name)]并且它工作得很好,但是我们有很多类,我正在寻找更全局的解决方案。

我还尝试像这样全局配置 JsonOptions:

        services.Configure<JsonOptions>(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
});

但是什么也没做

最佳答案

使用JsonOptions来自 Microsoft.AspNetCore.Http.Json 命名空间 ( docs ):

services.Configure<JsonOptions>(options =>
{
options.SerializerOptions.PropertyNamingPolicy = null;
options.SerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
});

UPD

如果您的应用程序同时使用最小 API 端点和 MVC 端点,那么您尝试从两个命名空间配置选项:

services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(options =>
{
options.SerializerOptions.PropertyNamingPolicy = null;
options.SerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
});
services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
});

UPD 2

从 .NET 7 开始,您可以使用 HttpJsonServiceExtensions.ConfigureHttpJsonOptions对于“最小 API”:

builder.Services.ConfigureHttpJsonOptions(opts => opts.SerializerOptions.IncludeFields = true);

关于c# - 如何在使用 MinimalApi 时配置 json 名称大小写策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74889635/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com