为了减少不必要的内容传输, 过滤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值,在结果中就找不到了,不利于调试。