正是江南好风景,赏花时节却无君

——南方

前言

在日常开发中,我们会经常使用到枚举类,但是我们在将枚举代表的含义返回给前端的时候,常常会导致我们只返回枚举的某一部分给前端(不是key就是value),那么如果我们想要将key和value都返回给前端该怎么处理呢

一个注解

1
@JsonFormat(shape = JsonFormat.Shape.OBJECT)

这个注解可以将枚举类序列化为对象,接下来就看怎么使用

使用

1.先来一个简单的枚举类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum AuditEnum {

PASS(1, "通过"),
REJECT(2, "驳回");

private Integer code;
private String value;

AuditEnum(Integer code, String value) {
this.code = code;
this.value = value;
}

public Integer getCode() {
return code;
}

public String getValue() {
return value;
}

}

2.建一个常用的实体类

1
2
3
4
5
6
7
8
@Data
public class Audit {

private String name;

private AuditEnum auditEnum;

}

3.按照个人习惯再来一个vo对象返回前端

1
2
3
4
5
6
7
8
9
@Data
public class AuditVO implements Serializable {
private static final long serialVersionUID = 9051689569410929242L;

private String name;

private AuditEnum auditEnum;

}

4.再来一个controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RestController
public class AuditController {

@GetMapping("/test")
public AuditVO test() {
AuditVO vo = new AuditVO();
Audit audit = new Audit();
audit.setName("nflj");
audit.setAuditEnum(AuditEnum.PASS);
BeanUtils.copyProperties(audit, vo);
System.out.println(audit);
return vo;
}
}

5.浏览器测试结果

image-20230303204912550

6.结果如上,简直完美

结尾

以后就再也不用使用字典进行反查了,也算是提升了一丢丢性能吧