使用默认值为枚举生成C#招摇过市
我的api如下所示:使用默认值为枚举生成C#招摇过市,c#,enums,swagger,swagger-codegen,C#,Enums,Swagger,Swagger Codegen,我的api如下所示: public Task<IActionResult> GetAsync([FromRoute] string id, [FromQuery] Query select = Query.All) 我补充说 services.AddSwaggerGen(c =>{c.DescribeAllEnumsAsStrings();}) 在startup.cs中,但这不适用于默认值,我得到以下生成的招摇过市,默认值为0而不是字符串: {
public Task<IActionResult> GetAsync([FromRoute] string id, [FromQuery] Query select = Query.All)
我补充说
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"
]
},
如何使默认值显示为字符串?您的项目将根据应用程序的序列化设置自动反序列化,解决方法是添加更改该特定属性序列化的标记
[JsonConverter(typeof(StringEnumConverter))]
编辑:启动时,您可以插入json选项,将枚举序列化为字符串,如下所示:
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.Converters.Add(new StringEnumConverter(true));
});
我将在哪里添加此标签?当我查看SDK swagger生成的代码时,我看到了这一点,但我不知道如何将其添加到代码中,从而使其序列化correctly@BenZifkin这种方法正好位于与枚举匹配的类属性之上。对于启动配置,请检查编辑
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.Converters.Add(new StringEnumConverter(true));
});