背景:
使用@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>