[英]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-codegen-maven-plugin生成无效的java类文件,如下所示:生成<,>和“字符,看起来和问题一样。
@XmlType(name="List<EnumTestArrayEnum>")
@XmlEnum
public enum List<EnumTestArrayEnum> {
ONE(List<String>.valueOf(""one"")), TWO(List<String>.valueOf(""two""));
private List<String> value;
List<EnumTestArrayEnum> (List<String> v) {
value = v;
}
public String value() {
return value;
}
public static List<EnumTestArrayEnum> 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.