SpringMVC响应数据忽略null.md 1.6 KB

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