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

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

本帖最后由 bighong0404 于 2015-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-databind 2.5.1版本亲测有效

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

com.fasterxml.jackson.core

jackson-databind

2.5.1

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

2. spring mvc配置文件,

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

public ObjectMapper setSerializationInclusion(JsonInclude.Include incl) {

_serializationConfig = _serializationConfig.withSerializationInclusion(incl);

return this;

}

因此对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.

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..  还是无用....

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

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

思路覆盖默认的MappingJacksonHttpMessageConverter。

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值