900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java json 返回null [] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...

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

时间:2019-07-20 01:48:38

相关推荐

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

[求助] Spring4 MVC 返回json格式时候 设置不返回null值属性的问题

本帖最后由 bighong0404 于 -10-06 12:45:38 编辑

背景:

使用@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-databind2.5.1版本亲测有效

spring使用的是fasterxml.jackson组件解析对象.因此依赖一下包..

com.fasterxml.jackson.core

jackson-databind

2.5.1

问题来了!!第二种方法:

2.springmvc配置文件,

查看API文件,发现com.fasterxml.jackson.databind.ObjectMapper有一下方法,而JsonInclude.Include枚举类有个值:NON_NULL(感觉应该和方法1的注解是同一个),

publicObjectMappersetSerializationInclusion(JsonInclude.Includeincl){

_serializationConfig=_serializationConfig.withSerializationInclusion(incl);

returnthis;

}

因此对jackson的objectMapper设置属性

NON_NULL

最后就是这样:

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

NON_NULL

application/json;charset=UTF-8

但测试过还是无效.....

也尝试了自己写子类继承com.fasterxml.jackson.databind.ObjectMapper.

publicclassCustomObjectMapperextendsObjectMapper{

privatestaticfinallongserialVersionUID=3072523733092288622L;

publicCustomObjectMapper(){

super.setDateFormat(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"));

super.getSerializationConfig().withSerializationInclusion(

JsonInclude.Include.NON_NULL);

}

}

然后注入到上诉代码被注释的地方替换com.fasterxml.jackson.databind.ObjectMapper..还是无用....

求助哪位大神能帮忙解答一下....明显第二种方法优于第一种.....但苦于无效...

------解决思路----------------------

思路覆盖默认的MappingJacksonHttpMessageConverter。

重载MappingJacksonHttpMessageConverter,提供配置排除null值:

class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">

static-field="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion.NON_NULL"/>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。