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

如何通过Swagger Code Generator为生成的POJO添加@JsonInclude(Include.ALWAYS)注解

Swagger Code Generator添加@JsonInclude注解问题解决方案

需求说明

需要在Swagger Code Generator生成的POJO类和字段级别添加@JsonInclude(Include.ALWAYS)注解,期望生成的POJO示例如下:

@JsonInclude(Include.ALWAYS)
public class Pet {
    @JsonInclude(Include.ALWAYS)
    @JsonProperty("name")
    private String name = null;
}

当前配置问题

你当前的Maven插件配置仅设置了类级别的注解,且未覆盖字段级别需求,导致无法生成符合预期的代码:

<plugin>
    <groupId>io.swagger.codegen.v3</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <configuration>
        <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
        <configOptions>                
            <additionalModelTypeAnnotations>@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS)</additionalModelTypeAnnotations>
        </configOptions>
    </plugin>

修复方案

1. 同时配置类和字段级别注解

添加additionalPropertyAnnotations配置项,实现字段级别注解的生成,完整配置如下:

<plugin>
    <groupId>io.swagger.codegen.v3</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <configuration>
        <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
        <configOptions>
            <!-- 类级别注解 -->
            <additionalModelTypeAnnotations>@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS)</additionalModelTypeAnnotations>
            <!-- 字段级别注解 -->
            <additionalPropertyAnnotations>@com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS)</additionalPropertyAnnotations>
        </configOptions>
    </configuration>
</plugin>

2. 简化注解写法(可选)

如果希望生成的注解是短写形式@JsonInclude(Include.ALWAYS),可以通过importMappings配置自动导入Jackson相关类,避免全限定类名:

<plugin>
    <groupId>io.swagger.codegen.v3</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <configuration>
        <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
        <!-- 自动导入注解相关类 -->
        <importMappings>
            <importMapping>JsonInclude=com.fasterxml.jackson.annotation.JsonInclude</importMapping>
            <importMapping>Include=com.fasterxml.jackson.annotation.JsonInclude.Include</importMapping>
        </importMappings>
        <configOptions>
            <additionalModelTypeAnnotations>@JsonInclude(Include.ALWAYS)</additionalModelTypeAnnotations>
            <additionalPropertyAnnotations>@JsonInclude(Include.ALWAYS)</additionalPropertyAnnotations>
        </configOptions>
    </configuration>
</plugin>

验证

执行Maven代码生成命令:mvn swagger-codegen:generate,生成的POJO类会同时在类和字段级别添加目标注解,与预期示例一致。

内容的提问来源于stack exchange,提问作者P V REDDY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:41