我有一个基于Spring Boot
的项目,HttpMessageConverter使用Jackson。我配置了一个枚举解串器,但是没有用。
//这是enum的super的接口
public interface Enumable{
// some mothods
}
//这是一个枚举
public enum UserStatusEnum implements Enumable{
// some fields && override methods;
}
//这是一个客户枚举反序列化器
public class EnumDeserializer<E extends Enumerable> extends StdDeserializer<E> {
private Class<E> enumType;
public EnumDeserializer(Class<E> enumType) {
super(enumType);
this.enumType = enumType;
}
@Override
public E deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
return EnumUtil.of(this.enumType, jsonParser.getIntValue());
}
}
//这是MappingJackson2HttpMessageConverter配置
@Bean
@Primary
@SuppressWarnings({"rawtypes", "unchecked"})
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
SimpleModule customerModule = new SimpleModule();
// can't work
customerModule.addDeserializer(Enumerable.class, new EnumDeserializer(Enumerable.class));
// this ok
// customerModule.addDeserializer(UserStatusEnum.class, new EnumDeserializer(UserStatusEnum.class));
objectMapper.registerModule(customerModule);
}
谁有一些想法?非常感谢你
此链接是我的github项目