spring boot 如何映射json格式请求中的枚举值

@RestController
public class EmployeeController {
    @PostMapping("checkEmployee")
    public String checkEmployee(@RequestBody Employee employee) {
        return employee.getDepartment().getDepCode();
    }
}

请求实体:

public class Employee {
 
    private String name;
 
    private DepartmentEnum department;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public DepartmentEnum getDepartment() {
        return department;
    }
 
    public void setDepartment(DepartmentEnum department) {
        this.department = department;
    }
}

枚举:

public enum Department {
 
    SALES("d1"),
 
    MARKETING("d2"),
 
    PRODUCTION("d3");
 
    private String depCode;
 
    private Department(String depCode) {
        this.depCode = depCode;
    }
 
    public String getDepCode() {
        return this.depCode;
    }
 
    /**
      * 增加映射方法,并为方法添加@JsonCreator
      */
    @JsonCreator
    public static Department getDepartmentFromCode(String value) {
        for (Department dep : Department.values()) {
            if (dep.getDepCode().equals(value)) {
                return dep;
            }
        }
        return null;
    }
 
}

测试结果:

 

参考:https://fullstackdeveloper.guru/2020/05/08/how-to-map-enum-types-to-json-requests-in-spring-boot-automatically/

posted on 2020-11-11 09:28  Joequa  阅读(1809)  评论(0编辑  收藏  举报