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

.NET 6中如何在属性级别配置Swagger显示枚举为字符串?

针对Swagger UI细粒度显示枚举属性为字符串的解决方案

你在.NET 6项目中使用System.Text.Json和Swashbuckle v6.5.0,希望仅对单个枚举属性设置Swagger UI显示字符串而非整数,不想用全局配置或枚举类上加特性的方式,目前尝试在属性上加[JsonConverter(typeof(JsonStringEnumConverter))]但Swagger UI不生效,除了官方修复外,你可以通过自定义Swagger过滤器来实现需求:

自定义Schema过滤器实现属性级控制

通过实现ISchemaFilter接口,我们可以手动修改带有指定特性的枚举属性的Swagger Schema,让它显示字符串值而非整数:

  1. 创建自定义过滤器类:
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Reflection;
using System.Text.Json.Serialization;

public class JsonStringEnumPropertyFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        if (context.MemberInfo is PropertyInfo propertyInfo)
        {
            // 检查当前属性是否标记了JsonStringEnumConverter特性
            var converterAttr = propertyInfo.GetCustomAttribute<JsonConverterAttribute>();
            if (converterAttr != null && converterAttr.ConverterType == typeof(JsonStringEnumConverter))
            {
                var enumType = Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType;
                if (enumType.IsEnum)
                {
                    // 修改Schema类型为字符串
                    schema.Type = "string";
                    schema.Format = null;
                    // 替换枚举值为字符串名称
                    schema.Enum.Clear();
                    foreach (var enumValue in Enum.GetValues(enumType))
                    {
                        schema.Enum.Add(new OpenApiString(Enum.GetName(enumType, enumValue)));
                    }
                }
            }
        }
    }
}
  1. 在Program.cs中注册这个过滤器:
builder.Services.AddSwaggerGen(c =>
{
    c.SchemaFilter<JsonStringEnumPropertyFilter>();
    // 保留你原有的Swagger配置
});

效果验证

完成配置后,启动项目打开Swagger UI,你会看到Address记录中标记了[JsonConverter(typeof(JsonStringEnumConverter))]的AddressType属性,会显示对应的枚举字符串选项(比如Home、Work这类值),而其他未标记的枚举属性依然保持整数显示,完美实现细粒度控制。

内容的提问来源于stack exchange,提问作者KenR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:10:37