C#Swagger生成默认值的枚举

时间:2019-05-16 23:28:51

标签: c# enums swagger swagger-codegen

我的api如下所示:

public Task<IActionResult> GetAsync([FromRoute] string id, [FromQuery] Query select = Query.All)

对于查询,我们只希望允许某些属性,这些属性在查询枚举中列出,如下所示:

    public enum Query
    {
        All,
        Property1,
        Property2
    }

我添加了

 services.AddSwaggerGen(c =>{c.DescribeAllEnumsAsStrings();})

在startup.cs中,但这不适用于默认值,我得到以下生成的摇摇欲坠,默认值为0而不是字符串:

     {
        "name": "selec",
        "in": "query",
        "description": "",
        "required": false,
        "type": "string",
        "default": 0, //NOT SHOWN AS STRING
        "enum": [
          "none",
          "property1",
          "property2"
        ]
      },

如何使默认值显示为字符串?

1 个答案:

答案 0 :(得分:2)

您的项目会根据应用程序的序列化设置自动进行反序列化,解决方法是添加用于更改特定属性序列化的标签

[JsonConverter(typeof(StringEnumConverter))]