提问者:小点点

带名称的Swagger枚举


它可能在Swashuckle. AspNetCore.Swagger(6.1.1)获得这样的枚举与名称?我需要更好的名称生成API客户端的前端应用程序。

public enum BasketResourceEnum
{
    Stocks = 1,
    Currencies
}

现在我在json中得到这样的表示,我需要名称而不是int值

  "BasketResourceEnum": {
    "enum": [
      1,
      2
    ],
    "type": "integer",
    "format": "int32"
  },

共3个答案

匿名用户

services
    .AddControllers()
    .AddJsonOptions(options => 
        options.SerializerSettings.Converters.Add(new StringEnumConverter()));

匿名用户

如果您更喜欢使用System. Text.Json

using System.Text.Json.Serialization;
...
var builder = WebApplication.CreateBuilder(args);
builder.Services
    .AddControllers()
    .AddJsonOptions(options => options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));

匿名用户

如果您不想选择将枚举值序列化为字符串,而只是在Swagger中描述其成员的名称,您可以使用此nuget。

在最小的API您可以:

using Unchase.Swashbuckle.AspNetCore.Extensions.Extensions;
...
builder.Services.ConfigureSwaggerGen(options =>
{
    options.AddEnumsWithValuesFixFilters();
});