当前位置: 首页 > 知识库问答 >
问题:

C#Swagger生成具有默认值的枚举

司马昕
2023-03-14

我的api如下所示:

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

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

    public enum Query
    {
        All,
        Property1,
        Property2
    }

我加了

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

在启动阶段。cs,但这不适用于默认值,我得到以下生成的虚张声势,默认值为0而不是字符串:

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

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

共有1个答案

姬念
2023-03-14

您的项目是自动反序列化根据您的应用程序的序列化设置周围的工作是添加标记更改序列化的特定属性

[JsonConverter(typeof(StringEnumConverter))]

编辑:在启动时,您可以注入json选项,将枚举序列化为字符串,如下所示:

 services.AddMvc().AddJsonOptions(options =>
                {
                    options.SerializerSettings.Converters.Add(new StringEnumConverter(true));
                });
 类似资料:
  • 我有一个.Net Core v2.1 Web API,它使用NSwag生成其Swagger Json。 我有一个这样的反应模型- 生成Swagger JSON的- 当在JSON上运行swagger代码时,我在我的IO. Swagger项目中获得了以下LoginResault模型,用于C#(选择了目标框架5.0)- 有人可以帮助描述我如何让枚举生成与IO. Swagger中的原始LoginResul

  • 我如何在从下面的API生成的swagger中定义属性的默认值? Swashbuckle生成OrderDirection作为所需参数。我希望它是可选的,并向客户机指示默认值(不确定swagger是否支持此选项)。 我不喜欢使属性类型为空。还有其他选择吗?理想情况下使用内置类... 我用的是虚张声势的皮带扣。AspNetCore-https://docs.microsoft.com/en-us/asp

  • 我有以下结构 包含枚举,该枚举包含或。现在我有了一个类,它包含一个。 这是在swagger yml中指定的(删除了一些不相关的代码) 我使用(也尝试了v3&openapi-generator)生成代码,配置如下: 现在发生的情况是,库将生成注释: 这里的问题是,如果我现在尝试反序列化/序列化包含带有的收件箱的Json字符串,它将引发异常,因为没有名称为的已知子类型。 seralizer期望注释指定

  • 我寻找一些配置,我可以改变接口的名称,已生成,但没有找到解决方案。 对此有什么想法吗??

  • 问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这

  • 本文向大家介绍C#属性的默认值,包括了C#属性的默认值的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用初始化程序(C#6)设置默认值 如果它是只读的,则可以返回如下值: