Java枚举以json形式返回给前端

1,127 阅读1分钟

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

前言

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

一个注解

@JsonFormat(shape = JsonFormat.Shape.OBJECT)

这个注解可以将枚举类序列化为对象

使用

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

@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.建一个常用的实体类

@Data
public class Audit {

    private String name;
    
    private AuditEnum auditEnum;

}

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

@Data
public class AuditVO implements Serializable {
    private static final long serialVersionUID = 9051689569410929242L;

    private String name;

    private AuditEnum auditEnum;

}

4.再来一个controller

@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.png

6.结果如上,简直完美

结尾

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