java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

目录

一、使用场景

二、环境准备

1、引入依赖

2、实体类

三、示例

1、不返回空值

(1)方式

(2)测试

(3)说明

2、不返回部分属性

(1)方式

(2)测试


一、使用场景

在开发过程中,有时候需要将后端数据返回前端,此时有些数据为空属性不需要返回,或者有些属性不需要返回,因此就需要处理。

二、环境准备

1、引入依赖

XML 复制代码
		<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、实体类

java 复制代码
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student{
    private Integer id;
    private String name;
    private Integer age;
    private String address;

    private BigDecimal score;

    private String className;

    private List<String> subjectList = new ArrayList<>();

    
}

三、示例

1、不返回空值

(1)方式

在实体类上面加上下面的注解:

java 复制代码
@JsonInclude(JsonInclude.Include.NON_EMPTY)

(2)测试

Controller里面的方法:

java 复制代码
    @PostMapping("/getData")
    public R getData(){
        Student student = new Student();
        student.setName("Tom");
        student.setAge(22);
        return R.ok().data("student", student);
    }

测试结果:

(3)说明

如果要对部分属性进行空值限制,分为两类:

  • 字符串、基本数据类型的设置,使用JsonInclude.Include.NON_NULL
  • 对象、数组之类的设置,使用JsonInclude.Include.NON_EMPTY
java 复制代码
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student{
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer id;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String name;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer age;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String address;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private BigDecimal score;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String className;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<String> subjectList = new ArrayList<>();

}

2、不返回部分属性

(1)方式

实体类属性上使用注解:

java 复制代码
@JsonIgnore
java 复制代码
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;


@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    @JsonIgnore
    private String address;

    private BigDecimal score;

    private String className;

    private List<String> subjectList = new ArrayList<>();

}

(2)测试

Controller里面的方法:

java 复制代码
    @PostMapping("/getData")
    public R getData(){
        Student student = new Student();
        student.setId(1001);
        student.setName("Tom");
        student.setAge(22);
        student.setAddress("浙江");
        return R.ok().data("student", student);
    }

测试结果:

相关推荐
阿虎儿13 分钟前
React Context 详解:从入门到性能优化
前端·vue.js·react.js
神奇小汤圆27 分钟前
金三银四Java面试题及答案汇总(2026持续更新)
后端
Ray Liang34 分钟前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
颜酱36 分钟前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
Sailing37 分钟前
🚀 别再乱写 16px 了!CSS 单位体系已经进入“计算时代”,真正的响应式布局
前端·css·面试
神奇小汤圆41 分钟前
加了 limit 1,查询竟然变慢了?
后端
Java水解1 小时前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端
Java水解1 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
喝水的长颈鹿1 小时前
【大白话前端 03】Web 标准与最佳实践
前端
千寻girling1 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python