SpringBoot极简教程 · Spring Boot

Spring Boot项目配置接口返回实体字段为Null不显示

2020-03-27  本文已影响0人  zhangweisep

首先我们先来看一下对比效果
未配置Null值不显示:

{
    "success": true,
    "code": "1000",
    "error": "执行成功",
    "data": [
        {
            "id": "58f9dfe411884b928830717ee06c",
            "createBy": null,
            "createTime": null,
            "updateBy": null,
            "updateTime": null,
            "delFlag": null,
            "remark": null,
            "pretensionId": null,
            "holeNum": "测试数据",
            "elongationTheory": null,
            "elongationReal": null,
            "elongationError": null,
            "status": null
        }
    ]
}

配置了不显示Null值之后:

{
    "success": true,
    "code": "1000",
    "error": "执行成功",
    "data": [
        {
            "id": "58f9dfe411884b928830717ee06c",
            "holeNum": "测试数据"
        }
    ]
}

要想实现这种效果有三种方式
(个人总结,如有不对还望指正,如有其它方式还请留言,万分感谢)

  1. 在yml文件中配置null值验证
  2. 配置JacksonConfig 类配置null值验证
  3. 使用注解的方式配置null值验证
网上关于1、2两种null值验证方式的资料很多,这里偷懒就不写了,请自行查阅

这边简单说一下使用注解的方式配置null值验证

注解验证也有两种方式

  1. 使用@JsonSerialize注解
  2. 使用@JsonInclude注解

@JsonSerialize是早期使用的注解,目前已经过时了
com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion已经被 com.fasterxml.jackson.annotation.JsonInclude代替。
所以@JsonSerialize已经被弃用了
目前使用的是@JsonInclude注解
@JsonInclude(JsonInclude.Include.NON_NULL)
Include有七个枚举值

ALWAYS,//该值指示始终包含该属性
NON_NULL,//属性为NULL 不序列化,就是为null的字段不参加序列化    
NON_ABSENT,// 属性为默认值不序列化
NON_EMPTY,//属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
NON_DEFAULT,
CUSTOM,//该值指示单独的“筛选器”对象
USE_DEFAULTS;//伪值,用于指示更高级别的默认值

一般会用到NON_NULL和NON_EMPTY
这个注解可以使用在类和字段上,来达到精准控制字段值的规则

上一篇下一篇

猜你喜欢

热点阅读