1、使用@JsonCreator 反序列化
定义一个通过某个字段生成枚举的函数,并添加@JsonCreator注解。这样在前端传入int类型会转为枚举类型。
@JsonCreator
public static SexEnum getByCode(int code) {
for (SexEnum value : SexEnum.values()) {
if (Objects.equals(code, value.getCode())) {
return value;
}
}
return null;
}
2、使用@JsonValue序列化
在枚举内某个字段的getter方法上添加@JsonValue注解。这样在返回前端数据时,会将枚举类型转为int类型的code的值。
@JsonValue
public int getCode() {
return this.code;
}
3、完整枚举类
package com.iscas.biz.mp.test.model.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.annotation.JsonView;
import com.iscas.biz.mp.test.model.TestEntity;
import lombok.Getter;
import java.util.Objects;
/**
* //TODO
*
* @author zhuquanwen
* @vesion 1.0
* @date 2020/4/5 15:23
* @since jdk1.8
*/
public enum SexEnum /*implements IEnum<Integer>*/ {
/**
* 男
* */
MAN(1, "男"),
/**
* 女
* */
WOMEN(2, "女");
@EnumValue
private final int code;
@JsonValue
public int getCode() {
return this.code;
}
public String getDescription() {
return description;
}
private final String description;
SexEnum(int val, String description) {
this.code = val;
this.description = description;
}
@JsonCreator
public static SexEnum getByCode(int code) {
for (SexEnum value : SexEnum.values()) {
if (Objects.equals(code, value.getCode())) {
return value;
}
}
return null;
}
/*
@Override
public Integer getValue() {
return code;
}*/
}
package com.iscas.biz.mp.test.model;
import com.iscas.biz.mp.test.model.enums.SexEnum;
import lombok.Data;
/**
* //TODO
*
* @author zhuquanwen
* @vesion 1.0
* @date 2020/4/5 15:22
* @since jdk1.8
*/
@Data
public class TestEntity {
private String name;
private SexEnum sex;
}
本文暂时没有评论,来添加一个吧(●'◡'●)