|
|
|
@ -2,7 +2,6 @@ package cc.yunxi.common.domain.convert;
|
|
|
|
|
|
|
|
|
|
import cc.yunxi.common.enums.BaseEnum;
|
|
|
|
|
import cc.yunxi.common.factory.StringCodeToEnumConverterFactory;
|
|
|
|
|
import com.baomidou.mybatisplus.annotation.IEnum;
|
|
|
|
|
import com.fasterxml.jackson.core.JsonParser;
|
|
|
|
|
import com.fasterxml.jackson.databind.BeanProperty;
|
|
|
|
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
|
|
@ -21,7 +20,7 @@ import java.io.IOException;
|
|
|
|
|
@EqualsAndHashCode(callSuper = true)
|
|
|
|
|
public class EnumDeserializer extends JsonDeserializer<BaseEnum> implements ContextualDeserializer {
|
|
|
|
|
|
|
|
|
|
private Class<?> target;
|
|
|
|
|
private Class<? extends BaseEnum> target;
|
|
|
|
|
|
|
|
|
|
public static final EnumDeserializer INSTANCE = new EnumDeserializer();
|
|
|
|
|
|
|
|
|
@ -32,10 +31,11 @@ public class EnumDeserializer extends JsonDeserializer<BaseEnum> implements Cont
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
// BaseEnum类 = target类相同 | tartget类的父类或接口
|
|
|
|
|
if (BaseEnum.class.isAssignableFrom(target)) {
|
|
|
|
|
return StringCodeToEnumConverterFactory.getEnum((Class) target, jsonParser.getText());
|
|
|
|
|
}
|
|
|
|
|
return defaultEnumTransform(target,jsonParser.getText());
|
|
|
|
|
// if (BaseEnum.class.isAssignableFrom(target)) {
|
|
|
|
|
// return StringCodeToEnumConverterFactory.getEnum(target, jsonParser.getText());
|
|
|
|
|
// }
|
|
|
|
|
// return defaultEnumTransform(target,jsonParser.getText());
|
|
|
|
|
return StringCodeToEnumConverterFactory.getEnum(target, jsonParser.getText());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -48,11 +48,17 @@ public class EnumDeserializer extends JsonDeserializer<BaseEnum> implements Cont
|
|
|
|
|
public JsonDeserializer<?> createContextual(DeserializationContext ctx, BeanProperty property) throws JsonMappingException {
|
|
|
|
|
Class<?> rawCls = ctx.getContextualType().getRawClass();
|
|
|
|
|
EnumDeserializer enumDeserializer = new EnumDeserializer();
|
|
|
|
|
enumDeserializer.setTarget(rawCls);
|
|
|
|
|
enumDeserializer.setTarget((Class<? extends BaseEnum>) rawCls);
|
|
|
|
|
return enumDeserializer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 默认通过ordinal获取
|
|
|
|
|
* @param type
|
|
|
|
|
* @param indexString
|
|
|
|
|
* @return BaseEnum
|
|
|
|
|
*/
|
|
|
|
|
public static BaseEnum defaultEnumTransform(Class<?> type, String indexString) {
|
|
|
|
|
BaseEnum[] enumConstants = (BaseEnum[]) type.getEnumConstants();
|
|
|
|
|
try {
|
|
|
|
|