gpt4 book ai didi

c# - 在 ASP.NET Core 3 中更改单个 ASP.NET Core API Controller 或单个操作的 System.Text.Json 序列化选项

转载 作者:行者123 更新时间:2023-12-04 13:38:57 27 4
gpt4 key购买 nike

我有两个 Controller Controller :ControllerA 和 ControllerB。每个 Controller 的基类是 ControllerBase。

ControllerA 需要在默认选项中反序列化 JSON

JsonSerializerOptions.IgnoreNullValues = false;

ControllerB 需要使用选项反序列化 JSON
JsonSerializerOptions.IgnoreNullValues = true;

我知道如何在 Startup.cs 中全局设置此选项
services.AddControllers().AddJsonOptions( options => options.JsonSerializerOptions.IgnoreNullValues = true);

但是如何为 Controller 或 Action 设置特定的反序列化选项? (ASP.NET Core 3 API)

最佳答案

正如 Fei Han 所建议的,直接的答案是在 ControllerB 上使用属性 NullValuesJsonOutput :

public class NullValuesJsonOutputAttribute : ActionFilterAttribute
{
private static readonly SystemTextJsonOutputFormatter Formatter = new SystemTextJsonOutputFormatter(new JsonSerializerOptions
{
IgnoreNullValues = true
});

public override void OnActionExecuted(ActionExecutedContext context)
{
if (context.Result is ObjectResult objectResult)
objectResult.Formatters.Add(Formatter);
}
}

关于c# - 在 ASP.NET Core 3 中更改单个 ASP.NET Core API Controller 或单个操作的 System.Text.Json 序列化选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60032894/

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