如何自定义swagger codegen以生成忽略空值的模型

时间:2017-03-24 10:42:21

标签: spring-boot jackson swagger swagger-codegen

我使用swagger-codgen为我的spring启动应用程序生成java模型类,并将它们序列化为json。默认情况下,这些模型都包含具有空值的可选属性。

我想为spring配置swagger-codgen,将这个注释包含在所有类的顶部:@JsonInclude(Include.NON_NULL),以便null值属性不包含在序列化的json中。

我怎样才能做到这一点?有配置选项还是我必须手动扩展spring codegen?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

spring:
   jackson:
      default-property-inclusion: NON_NULL

答案 2 :(得分:0)

如果您没有application.yaml或application.properties,但是具有spring xml配置,那么添加此方法也可以解决问题。
这不会将注释放入文件中,但效果相同。

<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>

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