如何在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.NewtonsoftJson
NuGet包,不得不使用以下内容。
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