You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为.NET 6进程内Azure Functions配置Newtonsoft序列化

.NET 6进程内Azure Functions序列化配置指南

一、配置Newtonsoft.Json序列化设置

  1. 安装必要NuGet包
    首先安装Microsoft.AspNetCore.Mvc.NewtonsoftJson包(版本需匹配.NET 6,如6.0.x系列),该包提供了AddNewtonsoftJson()扩展方法。

  2. 在Startup中配置序列化规则
    在Startup.cs的ConfigureServices方法中,通过以下代码自定义Newtonsoft的序列化行为:

    using Microsoft.Extensions.DependencyInjection;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Serialization;
    
    public class Startup : FunctionsStartup
    {
        public override void ConfigureServices(IFunctionsHostBuilder builder)
        {
            builder.Services.AddControllers()
                .AddNewtonsoftJson(options =>
                {
                    // 示例配置:驼峰命名、忽略空值
                    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                    options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                    // 可添加其他自定义设置,如日期格式、引用循环处理
                    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                });
        }
    }
    

    注意:旧文档中的AddJsonFormatters()方法已被废弃,.NET 6及后续版本统一使用AddNewtonsoftJson()配置Newtonsoft序列化。

二、切换为System.Text.Json处理响应(补充需求)

若需改用System.Text.Json作为默认序列化器,按以下步骤操作:

  1. 修改host.json启用System.Text.Json
    在项目根目录的host.json中添加配置,指定HTTP扩展使用System.Text.Json:

    {
      "version": "2.0",
      "extensions": {
        "http": {
          "serializer": {
            "useSystemTextJson": true
          }
        }
      }
    }
    
  2. 在Startup中配置System.Text.Json规则
    在Startup.cs的ConfigureServices方法中,通过AddJsonOptions()自定义序列化行为:

    using Microsoft.Extensions.DependencyInjection;
    using System.Text.Json;
    using System.Text.Json.Serialization;
    
    public class Startup : FunctionsStartup
    {
        public override void ConfigureServices(IFunctionsHostBuilder builder)
        {
            builder.Services.AddControllers()
                .AddJsonOptions(options =>
                {
                    // 示例配置:驼峰命名、忽略空值
                    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
                    options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
                    // 可添加其他自定义设置,如枚举字符串化、忽略大小写
                    options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
                    options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
                });
        }
    }
    

内容的提问来源于stack exchange,提问作者Ben Zuill-Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:03:28