日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...

發(fā)布時間:2023/12/10 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

[求助] Spring4 MVC 返回json格式時候 設(shè)置不返回null值屬性的問題

本帖最后由 bighong0404 于 2015-10-06 12:45:38 編輯

背景:

使用@responseBody設(shè)置以json格式返回數(shù)據(jù)時候.?有時候被返回的對象有些屬性是null值,?默認(rèn)還是會輸出.?例如下面代碼.?在與移動端交互時候會很浪費(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.??在被返回的對象例如User類,?添加注解@JsonInclude(Include.NON_NULL)即可.?在spring4.1.6,?jackson-databind?2.5.1版本親測有效

spring使用的是fasterxml.jackson組件解析對象.?因此依賴一下包..

com.fasterxml.jackson.core

jackson-databind

2.5.1

問題來了!!?第二種方法:

2.?spring?mvc配置文件,

查看API文件,?發(fā)現(xiàn)com.fasterxml.jackson.databind.ObjectMapper有一下方法,?而JsonInclude.Include枚舉類有個值:?NON_NULL(感覺應(yīng)該和方法1的注解是同一個),

public?ObjectMapper?setSerializationInclusion(JsonInclude.Include?incl)?{

_serializationConfig?=?_serializationConfig.withSerializationInclusion(incl);

return?this;

}

因此對jackson的objectMapper設(shè)置屬性

NON_NULL

最后就是這樣:

class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

NON_NULL

application/json;charset=UTF-8

但測試過還是無效.....

也嘗試了自己寫子類繼承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)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。