繁体   English   中英

如何在数组或枚举中将枚举值定义为map属性中的键?

[英]How to define enum values in array or enum as key in map property?

我使用swagger-codegen-maven-plugin(2.2.1)从YML配置生成java和typescript代码类文件。 我有两个问题。

如何在YML中定义枚举属性数组?

如何将map属性枚举定义为键,将布尔值定义为YML中的值?

让我知道是否可能或有任何解决方法? 目前,我在java和typescrtipt中定义了enum类,并将其作为字符串传递。 谢谢。

DataInfo:
       type: object
       properties:
          enumTest:        -- works fine
            type: string
            enum:
              - one
              - two   
           enumTestArray:   --failing to generate code
              type: array
              items:
                 type: string
                 enum:
                  - one
                   -two  
              testMap:   -- works fines generate Map<String, Boolean> and { [key: string]: boolean; };
                type: object         
                additionalProperties:
                    type: boolean 

swagger enum doc

地图属性

更新:

与第一个问题相关:定义枚举属性的数组。 swagger-codegen-maven-plugin生成无效的java类文件,如下所示:生成<,>和“字符,看起来和问题一样。

@XmlType(name="List&lt;EnumTestArrayEnum&gt;")
@XmlEnum
public enum List&lt;EnumTestArrayEnum&gt; {

    ONE(List&lt;String&gt;.valueOf("&quot;one&quot;")), TWO(List&lt;String&gt;.valueOf("&quot;two&quot;"));


    private List&lt;String&gt; value;

    List&lt;EnumTestArrayEnum&gt; (List&lt;String&gt; v) {
        value = v;
    }

    public String value() {
        return value;
    }

    public static List&lt;EnumTestArrayEnum&gt; fromValue(String v) {
        return valueOf(v);
    }
}

如何在YML中定义枚举属性数组?

你的enumTestArray示例几乎是正确的 - 你只需要在“ - ”和“two”之间enumTestArray一个空格来使YAML有效:

           enumTestArray:
              type: array
              items:
                 type: string
                 enum:
                  - one
                  - two  # <----

如何将map属性枚举定义为键,将布尔值定义为YML中的值?

在OpenAPI / Swagger中,映射键是任意字符串,并且不能限制键名或格式 您可以在description口头记录密钥格式。

或者,由于键是已知的(仅限于某些已知的枚举),因此您可以将所有可能的键定义为可选属性。 不优雅,但它可能适合你。

              testMap:
                type: object
                properties:
                  one:
                    type: boolean
                  two:
                    type: boolean
                  ...

还建议添加patternProperties支持 ,这将允许将键名限制为正则表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM