Spring Boot 如何自定义SwaggerCodeGen以生成忽略空值的模型

laik7k3q  于 2023-06-05  发布在  Spring
关注(0)|答案(4)|浏览(227)

我正在使用swagger-codgen为我的spring Boot 应用程序生成java模型类,并将它们序列化为json。默认情况下,这些模型都将包含空值的可选属性。
我想为spring配置swagger-codgen,以在所有类的顶部包含此注解:@JsonInclude(Include.NON_NULL),以便空值属性不包括在序列化的JSON中。
我如何才能做到这一点?是否有配置选项,或者我必须手动扩展spring codegen?

u59ebvdq

u59ebvdq1#

您可以在application.yaml中进行配置:

spring:
   jackson:
      default-property-inclusion: NON_NULL
xj3cbfub

xj3cbfub2#

实现这一点的一种方法是通过添加注解来修改Java Spring的pojo template。此模板用于生成模型。

pbpqsu0x

pbpqsu0x3#

如果您没有application.yaml或application.properties,但有springxml配置,那么添加this也可以实现。
这不会将注解放在文件中,但具有相同的效果。

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                    <property name="serializationInclusion" value="NON_NULL"/>
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

请注意,这应该添加到使用您生成的代码的应用程序中,而不一定是生成它的应用程序。

mzmfm0qo

mzmfm0qo4#

选项NotNullJacksonAnnotation是在Swagger Codegen 2.4.15中引入的。您可以找到here的详细信息。请随意使用它来用@JsonInclude(Include.NON_NULL)注解您的POJO。

<build>
    <plugins>
        <plugin>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-codegen-maven-plugin</artifactId>
            <version>2.4.15</version>
            <executions>
                <execution>
                    <id>generate-api</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <inputSpec>${project.basedir}/src/main/resources/swagger-api.yaml</inputSpec>
                        <language>java</language>
                        <modelPackage>org.test.model</modelPackage>
                        <configOptions>
                            <dateLibrary>java8</dateLibrary>
                            <notNullJacksonAnnotation>true</notNullJacksonAnnotation>
                        </configOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

相关问题