Spring Boot Swagger codegen忽略POJO类的空字段

7uzetpgm  于 2023-06-05  发布在  Spring
关注(0)|答案(3)|浏览(351)

我正在制作一个REST API,我想在类生成时添加Jackson注解来忽略null字段,所以我想为某些类添加这个注解,而不是为hole项目。
我知道这可以通过在www.example.com中application.properties添加以下行来完成:

spring.jackson.default-property-inclusion=non_null

但这是整个项目。
我看到有一些“.mustache”文件

- api.mustache
- apiController.mustache

我建议我必须在其中一个中添加一些代码,或者我应该在application.yml中插入一些代码?
我也在使用Sping Boot 和Swagger-codgen。
提前谢谢你,祝你有美好的一天!

anauzrmj

anauzrmj1#

好吧,经过几个小时的研究,我发现,因为我使用的是Swagger-codegen,我必须在https://github.com/swagger-api/swagger-codegen中搜索关于Swagger-Codegen的所有答案。这里是所有的模板,我发现我需要添加到我的项目以下两个文件

  • pojo.mustache
  • xmlAnnotation.mustache

可以找到上述文件的路径是

swagger-codegen/modules/swagger-codegen/src/main/resources/JavaSpring/

更重要的是,这些文件是生成Pojo类的简单模板,因此您需要在pojo.mustache文件中添加@JsonInclude(JsonInclude.Include.NON_NULL)注解,位于public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}...行的上方,以便在生成pojo类时插入。
完成后,再次构建您的项目!:)

mhd8tkvw

mhd8tkvw2#

您可以尝试在application.yaml中设置以下属性

spring.jackson.default-property-inclusion = NON_NULL

这对我来说很有效,可以从响应中过滤出空值。

bihw5rsg

bihw5rsg3#

它是#42997380的副本。
选项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>

相关问题