背景:
使用@responseBody设置以json格式返回数据时候. 有时候被返回的对象有些属性是null值, 默认仍是会输出. 例以下面代码. 在与移动端交互时候会很浪费流量.
{
"fpassword" : "sssssssss",
"favator" : "",
"fbirthday" : null,
"fcredType" : null,
"fcredid" : null,
"fregistedTime" : null,
"fstate" : 1,
"flstate" : 1,
"fstatusMask" : 0,
"fstatusMask1" : 0,
"fcreateTime" : 1443260277000,
"fmodifyTime" : 1443260277000,
"fstandby0" : null,
"fstandby1" : null,
"fstandby2" : null,
"fstandby3" : null,
"fstandby4" : null,
"fstandby5" : null,
"fstandby6" : null,
"fpassFlag" : 1,
"fquestion1" : null,
"fanswer1" : null,
"fquestion2" : null,
"fanswer2" : null,
"fregDeviceId" : null,
"fregClientIp" : null,
"fregChannel" : null,
"fpassModifyTime" : null
}
有两种方法设置不返回null值属性.
1. 在被返回的对象例如User类, 添加注解@JsonInclude(Include.NON_NULL)便可. 在spring4.1.6, jackson-databind 2.5.1版本亲测有效
spring使用的是fasterxml.jackson组件解析对象. 所以依赖一下包..
spring
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.1</version> </dependency>
问题来了!! 第二种方法:
2. spring mvc配置文件,json
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <beans:property name="objectMapper"> <beans:bean class="org.codehaus.jackson.map.ObjectMapper"> <beans:property name="serializationInclusion"> <util:constant static-field="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL" /> </beans:property> </beans:bean> </beans:property> </bean> </mvc:message-converters> </mvc:annotation-driven>