jackson实体转json时 为NULL不参加序列化的汇总,jacksonjson

jackson实体转json时 为NULL不参加序列化的汇总,jacksonjson


首先加入依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>

方法一、实体上使用 @JsonInclude(JsonInclude.Include.NON_NULL)

1、如果放在属性上,如果该属性为NULL则不参与序列化 ; 2、如果放在类上,那对这个类的全部属性起作用 ;

参数意义:

JsonInclude.Include.ALWAYS              默认

JsonInclude.Include.NON_DEFAULT     属性为默认值不序列化

JsonInclude.Include.NON_EMPTY         属性为 空(””) 或者为 NULL 都不序列化

JsonInclude.Include.NON_NULL           属性为NULL   不序列化

使用之前

使用之后

方法二、 如果不想每次都这样添加,可以在application.yml配置全局定义, 这种默认都生效

spring:

   jackson:

        default-property-inclusion: non_null

 

方法三、通过ObjectMapper 对象进行设置,下面是测试用例

@Test
public  void  test() throws JsonProcessingException {
    ResultVo resultVo = new ResultVo();
    resultVo.setCode(0);
    resultVo.setMsg("成功");

    ObjectMapper mapper = new ObjectMapper();
    mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);//默认
    String json = mapper.writeValueAsString(resultVo);
    System.out.println(json);

    mapper = new ObjectMapper();
    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); //属性为NULL不序列化
    json = mapper.writeValueAsString(resultVo);
    System.out.println(json);

    Map map = new HashMap();
    map.put("code",0);
    map.put("msg","成功");
    map.put("data",null);
    json = mapper.writeValueAsString(map);
    System.out.println(json);
}

打印如下:

{"code":0,"msg":"成功","data":null}
 {"code":0,"msg":"成功"}
 {"msg":"成功","code":0,"data":null}

注意:ObjectMapper 只对VO起作用;对Map List不起作用

 

1、如果必定返回的字段,可以在实体类一开始就给默认值(如字符串 ”” ; list [] ),来避免null

2、jackson实体转json时,某个属性不参加序列化时 使用@JsonIgnore 放在该属性上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值