访问Json序列化程序选项以避免在Azure Functions v3中序列化null



如何在Azure函数中设置序列化程序以在序列化时忽略null?

这是一个v3功能

我试过

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
Formatting = Formatting.Indented,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore
};

在启动我的功能

我现在开始认为Newtonsoft没有被用于json

如何强制使用Newtonsoft?

干杯

Paul

2023编辑

不同的函数(和MVC(版本有不同的设置方式,并且可能使用Newtonsoft。Json或System。文本Json

链接:

https://github.com/Azure/azure-functions-host/issues/5841#issuecomment-9877168758

https://stackoverflow.com/a/62270924/5436889

测试

原始答案(旧版本(

改编自HTTP触发的Azure函数中添加JSON选项

先决条件

您需要确保满足此处提到的所有先决条件

从该文档页面:

在使用依赖注入之前,必须安装以下NuGet包:

  • 微软。蔚蓝色的功能。扩展
  • 微软。NET。Sdk。函数包版本1.0.28或更高版本
  • 微软。扩展。DependencyInjection(当前仅支持3.x及更早版本(

注意:

本文中的指导仅适用于C#类库函数,这些函数与运行时一起在进程内运行。此自定义依赖项注入模型不适用于。NET隔离函数,使您可以运行。NET 5.0函数进程外。这个NET的独立进程模型依赖于常规的ASP。NET核心依赖项注入模式。

代码

将启动类添加到你的Azure功能项目中,如下所示:

using System;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace {
public class Startup: FunctionsStartup {
public override void Configure(IFunctionsHostBuilder builder) {
builder.Services.AddMvcCore().AddJsonFormatters().AddJsonOptions(options => {
// Adding json option to ignore null values.
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
}
}
}

这将把JSON选项设置为忽略空值。

在一个Functions V3应用程序中,我安装了Microsoft.AspNetCore.Mvc.NewtonsoftJsonNuGet包,不得不使用以下内容。

builder.Services.AddMvcCore().AddNewtonsoftJson(options => {
// Adding json option to ignore null values.
options.SerializerSettings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
});

来源:https://github.com/Azure/azure-functions-host/issues/5841#issuecomment-9877168758

此问题的公认答案不适用于Azure Functions v3+。您可以使用3.0+版本的Microsoft.AspNetCore.Mvc.NewtonsoftJson包来设置JSON序列化程序选项。

请参阅:https://stackoverflow.com/a/62270924/5436889

相关内容

  • 没有找到相关文章

最新更新