在Spring MVC 的Controller层中,在返回JSON数据的时候,若要对NULL字段不显示,也就是不对NULL的字段进行JSON序列化,那么有以下几种方法。
1、在实体类或者属性上添加注解
//将该标记放在属性上,如果该属性为NULL则不参与序列化
//如果放在类上边,那对这个类的全部属性起作用
@JsonInclude(JsonInclude.Include.NON_NULL)
//或者
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
2、在springboot的application.yml配置修改:
spring:
jackson:
default-property-inclusion: non_null
注意:在用fastjson转换为json格式字符串的时候,已经默认的不序列化NULL字段。
在spring mvc 的 application.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">
<!-- 为null字段时不显示 -->
<property name="serializationInclusion">
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>