当前使用版本(必须填写清楚,否则不予处理)
该问题是怎么引起的?(最新版上已修复的会直接close掉)
3.3.1.tmp
重现步骤
`@Getter
public enum ActivityStateEnum implements IEnum
PREPARE_STATE(1, "筹备阶段"),
FACE_STATE(2, "临战阶段"),
BATTLE_STATE(3, "决战阶段"),
SUMMARY_STATE(4, "总结阶段");
@EnumValue
private int code;
private String description;
ActivityStateEnum( int code, String description) {
this.code = code;
this.description = description;
}
@Override
public Integer getValue() {
return code;
}
@Override
public String toString() {
return this.description;
}
@JsonValue
public String getDescription(){
return this.description;
}
/**
* 获取通用状态状态map ,特殊状态自定义枚举
* @return
*/
public static Map<Integer ,String> getEnumNote() {
Map<Integer ,String> enumNote = new HashMap<>();
enumNote.put(1 , "筹备阶段");
enumNote.put(2 , "临战阶段");
enumNote.put(3 , "决战阶段");
enumNote.put(4 , "总结阶段");
return enumNote;
}
} `
`@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @Builder @TableName("activity") public class ActivityPO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
@NotNull(groups = ActivityPO.Update.class ,message = "id不能为空")
@Min(value = 1, groups = ActivityPO.Update.class, message = "id不能小于或等于0")
private Integer id;
/**
* 活动名称
*/
@NotBlank(message = ErrMsgRbac.USERNAME_ISNULL)
@Length(max = 45 ,message = ErrMsgRbac.USERNAME_TOO_LENGTH)
private String activityName;
/**
* 活动级别:1,A;2:B;3:C,越小级别越高
*/
private Integer activityLevel;
/**
* 活动状态:1,未开始;2,进行中;3,已结束;
*/
private ActivityStatusEnum activityStatus;
public @interface Update {}
}`
@PostMapping(value = "save")
public Res save(@RequestBody @Valid ActivityPO activity) {
// handleBindingResult(result);
activity.setCreateUser(loginCacheUtil.getUserName());
activityService.save(activity);
return Res.R_200();
}
传入的数字为枚举的index值,而不是数据库要存的值
报错信息
JSON parse error: Cannot deserialize value of type com.qianxin.command.enums.activity.ActivityStateEnum from number 4: index value outside legal index range [0..3]
Comment From: miemieYaho
json正反序列化的问题你找我们干什么?