spring mvc 返回json中去除null字段

    xiaoxiao2021-03-25  97

    为了减少不必要的内容传输, 过滤null字段,可对返回的类加入注释来解决。

    条件:

    1.  spring MVC 3.X 支持注解

    2. jackson-code.jar,jackson-mapper.jar 通常用jackson-all-xxx.jar 就行了

    使用:

    在需要序列化为json输出的类上增加, 例如:

    import org.codehaus.jackson.map.annotate.JsonSerialize; @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public class XXXX{ }

    官方说明

    @deprecated As of Jackson 2.0, this annotation has been replaced      *    by {@link com.fasterxml.jackson.annotation.JsonInclude}

    改成:

    @JsonInclude(Include.NON_NULL) public class XXXX{ }

    如果要全局配置可参考:

    <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="prefixJson" value="false" /> <property name="supportedMediaTypes" value="application/json" /> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="serializationInclusion"> <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value> </property> </bean> </property> </bean> </mvc:message-converters> <mvc:annotation-driven> <!-- 强化参数接收 --> <mvc:argument-resolvers> <bean class="org.durcframework.common.form.FormModelMethodArgumentResolver" /> </mvc:argument-resolvers> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <!-- 处理responseBody 里面日期类型 --> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> </bean> </property> <!-- 为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>全局配置有个问题是,本来就该为null值,在结果中就找不到了,不利于调试。

    转载请注明原文地址: https://ju.6miu.com/read-9786.html

    最新回复(0)