gpt4 book ai didi

c# - 从 IActionResult 响应中删除空值

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

我想设置一个全局设置,以便在从任何 HTTP 函数返回的任何响应中不返回 null 属性。

示例:

public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

[FunctionName("HttpTriggeredFunction")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
ILogger log)
{
var user = new User
{
Id = 1,
FirstName = "Chris",
LastName = null
};

return new OkObjectResult(user);
}

返回:

{
"id": 1,
"firstName": "Chris",
"lastName": null
}

在上面的示例中,我希望响应中不返回 lastName

我知道您可以执行以下操作:

[JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)]
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

但我不想装饰每个类。

在 Web API 的 Startup.cs 文件中,您可以执行如下操作:

services.AddMvcCore().AddNewtonsoftJson(jsonOptions =>
{
jsonOptions.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});

最佳答案

实际上,它与Web api中的设置几乎相同。

在azure函数中,您可以使用依赖注入(inject),然后注册services.AddMvcCore().AddNewtonsoftJson(xxx)。 azure函数中的DI可以引用this article .

首先,请确保您安装了以下 nuget 软件包(我在此测试中使用的是 azure function v3):

<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.5" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />

然后在您的 azure function 项目中,创建一个名为 Startup.cs 的类。这是该类的代码:

using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;

//add this line of code here.
[assembly: FunctionsStartup(typeof(FunctionApp6.Startup))]
namespace FunctionApp6
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddMvcCore().AddNewtonsoftJson(jsonOptions =>
{
jsonOptions.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
}
}
}

然后运行你的azure函数,空值将被删除。测试结果截图如下:

enter image description here

关于c# - 从 IActionResult 响应中删除空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62300816/

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