javascript
java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
[求助] Spring4 MVC 返回json格式時(shí)候 設(shè)置不返回null值屬性的問題
本帖最后由 bighong0404 于 2015-10-06 12:45:38 編輯
背景:
使用@responseBody設(shè)置以json格式返回?cái)?shù)據(jù)時(shí)候.?有時(shí)候被返回的對(duì)象有些屬性是null值,?默認(rèn)還是會(huì)輸出.?例如下面代碼.?在與移動(dòng)端交互時(shí)候會(huì)很浪費(fèi)流量.
{
"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
}
有兩種方法設(shè)置不返回null值屬性.
1.??在被返回的對(duì)象例如User類,?添加注解@JsonInclude(Include.NON_NULL)即可.?在spring4.1.6,?jackson-databind?2.5.1版本親測(cè)有效
spring使用的是fasterxml.jackson組件解析對(duì)象.?因此依賴一下包..
com.fasterxml.jackson.core
jackson-databind
2.5.1
問題來了!!?第二種方法:
2.?spring?mvc配置文件,
查看API文件,?發(fā)現(xiàn)com.fasterxml.jackson.databind.ObjectMapper有一下方法,?而JsonInclude.Include枚舉類有個(gè)值:?NON_NULL(感覺應(yīng)該和方法1的注解是同一個(gè)),
public?ObjectMapper?setSerializationInclusion(JsonInclude.Include?incl)?{
_serializationConfig?=?_serializationConfig.withSerializationInclusion(incl);
return?this;
}
因此對(duì)jackson的objectMapper設(shè)置屬性
NON_NULL
最后就是這樣:
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
NON_NULL
application/json;charset=UTF-8
但測(cè)試過還是無效.....
也嘗試了自己寫子類繼承com.fasterxml.jackson.databind.ObjectMapper.
public?class?CustomObjectMapper?extends?ObjectMapper?{
private?static?final?long?serialVersionUID?=?3072523733092288622L;
public?CustomObjectMapper()?{
super.setDateFormat(new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss"));
super.getSerializationConfig().withSerializationInclusion(
JsonInclude.Include.NON_NULL);
}
}
然后注入到上訴代碼被注釋的地方替換com.fasterxml.jackson.databind.ObjectMapper..??還是無用....
求助哪位大神能幫忙解答一下....?明顯第二種方法優(yōu)于第一種.....?但苦于無效...
------解決思路----------------------
思路覆蓋默認(rèn)的MappingJacksonHttpMessageConverter。
重載MappingJacksonHttpMessageConverter,提供配置排除null值:
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
static-field="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL"?/>
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php apache配置测试端口,详解安
- 下一篇: 女子漏尿57年只因长了3个肾!网友:不可