Jackson使用@JsonInclude配置实现,当controller返回前端的对象里有个属性为null的时候自动忽略这个属性,即不返回该属性

后端返回给前端JSON格式的对象数据中,当对象的字段为NULL时,该字段也会写入JSON返回;而很多时候前端期望后端只返回对象中非null的字段数据。在Jackson框架中提供了 @JsonInclude 注解以实现该功能

不返回null字段数据

在相关对象的类或对应字段上添加 @JsonInclude 注解,设定值为 NON_NULL

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Student
{
    private int id;
    private String username;
    private String sex;
    //字段上则只对这个字段生效
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String address;
    ...
}

则HTTP Response返回的该类的对象的JSON数据如下所示,无为null的字段

{
    "id": 0,
    "username": "Kallen",
    "sex": "female"
}

返回null字段数据

在相关对象的类或对应字段上添加 @JsonInclude 注解,设定值为 ALWAYS

@JsonInclude(JsonInclude.Include.ALWAYS)

则HTTP Response返回的该类的对象的JSON数据如下所示,其中包含null的字段

{
    "id": 0,
    "username": "Kallen",
    "sex": "female",
    "address": null
}

下面这些操作只有在接口返回的bean里的这个属性不是必需的时候才能这样玩,不然千万不要这样玩

在controller返回前端的时候单个实体类需要在属性值为null的时候忽略这个属性

加注解前,返回的属性的value是null

在这里插入图片描述

加注解后
在这里插入图片描述

这里data里的实体类是OrderDTO,所以在OrderDTO上加@JsonInclude(JsonInclude.Include.NON_NULL)注解即可

但是当有很多很多的实体类都需要这样时,如果允许全局都这样操作,可以在spring的启动yml文件中配置

spring:
  jackson:
    default-property-inclusion: non_null

也可以手动设置
demo

ObjectMapper objectMapper = new ObjectMapper()
//JsonInclude.Include.ALWAYS则是序列化的时候包含null值字段
objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值