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

- <dependency>
- <groupId>com.fasterxml.jackson.coregroupId>
- <artifactId>jackson-coreartifactId>
- <version>2.10.0version>
- dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.coregroupId>
- <artifactId>jackson-annotationsartifactId>
- <version>2.10.0version>
- dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.coregroupId>
- <artifactId>jackson-databindartifactId>
- <version>2.10.0version>
- dependency>
-
- 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
subjectList = new ArrayList<>(); -
-
- }
在实体类上面加上下面的注解:
@JsonInclude(JsonInclude.Include.NON_EMPTY)

Controller里面的方法:
- @PostMapping("/getData")
- public R getData(){
- Student student = new Student();
- student.setName("Tom");
- student.setAge(22);
- return R.ok().data("student", student);
- }
测试结果:

如果要对部分属性进行空值限制,分为两类:
-
-
- 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
subjectList = new ArrayList<>(); -
- }
实体类属性上使用注解:
@JsonIgnore
-
-
- 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
subjectList = new ArrayList<>(); -
- }
Controller里面的方法:
- @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);
- }
测试结果:

此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把testPwd属性序列化为pwd,@JsonProperty(value="pwd")。
作用在类上,被用来指明当序列化时需要对属性做排序,它有2个属性一个是alphabetic:布尔类型,表示是否采用字母拼音顺序排序,默认是为false,即不排序。如@JsonPropertyOrder(alphabetic=true)。
是用在实体类的方法类的头上 作用是实体类的参数查询到的为null的不显示,比如说你想传一些json数据到前台,但是不想传值为null的数据,就可以使用该标签。如@JsonInclude(JsonInclude.Include.NON_NULL)
可以注明是想要忽略的属性列表如@JsonIgnoreProperties({"name","age","title"}),也可以注明过滤掉未知的属性如@JsonIgnoreProperties(ignoreUnknown=true),@JsonIgnore表示忽略当前属性。
用在属性和方法上,可以方便的进行格式转换,如把Date转换为我们要的模式@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。
当实体类中成员属性是一个类的对象时候,忽略包装。直接显示属性。