springboot(二十二)自定义枚举类型的序列化和反序列化

 @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; }

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注