如何在OpenAPI中指定Set类型使Swagger生成器输出Set属性
OpenAPI/Swagger在线编辑器生成Set类型属性的实现方法
OpenAPI 规范语义上使用type: array + uniqueItems: true标记无重复元素的集合类型,但在线Swagger Editor默认的Java代码生成规则不会自动将该类标记映射为Set类型,所有数组类型默认生成为List,可通过以下两种无需修改pom配置的方式实现需求:
方案1:全局开启唯一元素数组转Set开关
在在线编辑器选择目标Java语言生成代码前,点击生成按钮旁的齿轮形配置图标,找到对应配置项开启即可:
- 生成通用Java客户端代码时,将
containerUniqueItemsAsSet参数值设为true - 生成Spring Boot服务端/客户端代码时,将
useSetForUniqueItems参数值设为true
配置生效后,所有带uniqueItems: true标记的数组属性,都会自动生成为对应泛型的Set类型。
方案2:单字段指定生成类型
如果仅需要个别属性生成为Set类型,可直接在属性定义中添加代码生成器原生支持的扩展字段,示例配置如下:
myProperty: uniqueItems: true type: array description: some description x-java-type: java.util.Set items: type: string
添加该配置后,无需调整全局生成参数,该字段会直接生成为Set<String>类型,其余数组属性仍保持默认List生成逻辑。
最终生成的属性代码符合预期:
@JsonProperty("myProperty") private Set<String> myProperty = null;
内容的提问来源于stack exchange,提问作者Florian S.
相关产品推荐
相关产品推荐

