作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从在我的 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/
我正在尝试从在我的 MVC Web 应用程序的端点中配置的最小 API 获取结果我的 Get 操作配置如下: endpoints.MapGet(
我是一名优秀的程序员,十分优秀!