You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Swagger Java注解生成additionalProperties:{}或true配置?

解决方案

场景1:使用Swagger 3.x / OpenAPI 3 注解(对应io.swagger.v3.oas.annotations包)

直接在Map字段上追加@Schema注解配置即可,示例代码如下:

import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Map;

class Test {
    @ApiModelProperty(value="something")
    private String name;
    
    @ApiModelProperty(value="something")
    @Schema(additionalProperties = Schema.AdditionalPropertiesValue.TRUE)
    private Map<String, Object> mapple;
}

上述配置生成的yaml会显示additionalProperties: true,如果需要生成additionalProperties: {},将属性值调整为Schema.AdditionalPropertiesValue.EMPTY即可。

场景2:使用旧版Swagger 1.x/2.x 注解(对应io.swagger.annotations包)

旧版@ApiModelProperty没有直接提供additionalProperties的配置参数,可选用以下两种方法实现:

  • 方法1:去掉Map的泛型参数,直接声明为原始类型的Map,示例:
class Test {
    @ApiModelProperty(value="something")
    private String name;
    
    @ApiModelProperty(value="something")
    private Map mapple;
}

绝大多数Swagger 2版本解析无泛型的Map类型时,会默认生成additionalProperties: true。

  • 方法2:通过注解的扩展属性配置,以Springfox框架为例,追加extensions配置即可:
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.Extension;
import io.swagger.annotations.ExtensionProperty;
import java.util.Map;

class Test {
    @ApiModelProperty(value="something")
    private String name;
    
    @ApiModelProperty(
        value="something",
        extensions = @Extension(properties = @ExtensionProperty(name = "additionalProperties", value = "true"))
    )
    private Map<String, Object> mapple;
}

额外说明

  1. 你贴出的生成yaml里的additionalPropeties属于拼写错误,正确字段名为additionalProperties,如果是框架自动生成的拼写错误,建议升级Swagger/Springfox依赖到最新稳定版即可修复。
  2. 你给出的示例Java代码存在语法问题:Private首字母大写应为小写private,Map<string,object>的泛型参数首字母应大写为Map<String,Object>,建议先修正语法问题再验证注解配置。

内容的提问来源于stack exchange,提问作者Bhushan Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:45:04