java后端返回给前端对象时去除值为空或NULL的属性

前言

测试接口时发现当返回的对象中属性值为 “” 或 [] 或 null 时,该属性依然会返回,这样数据看起来很不美观并且有时候也会导致前端组件出现一些小的bug。

例如这个下拉框,人事科下面是没有部门的,但是由于接口返回了 children 为空,导致后面多出一个空页面。

解决

1、引入pom依赖

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0</version>
        </dependency>

2、使用 @JsonInclude 注解

只需要在实体类中的属性上面加上 @JsonInclude(JsonInclude.Include.NON_EMPTY) 即可如下。

注意: 1、 departmentCode 属性为 String 类型,String 的默认值为 null,所以注解里面要使用 JsonInclude.Include.NON_NULL。 2、children 属性为 List 类型,List 的默认值为 空 或 [] ,所以注解里面要使用 JsonInclude.Include.NON_EMPTY 。

(另外还提供有 NON_ABSENT ,NON_DEFAULT 等可自行研究)

测试

接口效果

前端页面效果

经验分享 程序员 微信小程序 职场和发展