如何自定义 swagger codegen 以生成忽略空值的模型
How to customize swagger codegen to generate models that ignore null values
我正在使用 swagger-codgen 为我的 spring 引导应用程序生成 java 模型 类 并将它们序列化为 json。默认情况下,这些模型都将包含具有空值的可选属性。
我想为 spring 配置 swagger-codgen 以在所有 类: @JsonInclude(Include.NON_NULL)
之上包含此注释,以便空值属性不包含在序列化中json.
我怎样才能做到这一点?是否有配置选项,或者我是否必须手动扩展 spring codegen?
实现此目的的一种方法是通过添加注释为 Java Spring 修改 pojo template。
此模板用于生成模型。
您可以在 application.yaml
中进行配置:
spring:
jackson:
default-property-inclusion: NON_NULL
如果您没有 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>
请注意,这应该添加到使用您生成的代码的应用程序中,这不一定是生成代码的应用程序。
我正在使用 swagger-codgen 为我的 spring 引导应用程序生成 java 模型 类 并将它们序列化为 json。默认情况下,这些模型都将包含具有空值的可选属性。
我想为 spring 配置 swagger-codgen 以在所有 类: @JsonInclude(Include.NON_NULL)
之上包含此注释,以便空值属性不包含在序列化中json.
我怎样才能做到这一点?是否有配置选项,或者我是否必须手动扩展 spring codegen?
实现此目的的一种方法是通过添加注释为 Java Spring 修改 pojo template。 此模板用于生成模型。
您可以在 application.yaml
中进行配置:
spring:
jackson:
default-property-inclusion: NON_NULL
如果您没有 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>
请注意,这应该添加到使用您生成的代码的应用程序中,这不一定是生成代码的应用程序。