У меня есть проект, основанный на Spring Boot
, HttpMessageConverter использует Джексона. Я сконфигурировал десериализатор enum, но он не работал.
// это интерфейс enum's super
public interface Enumable{
// some mothods
}
// это перечисление
public enum UserStatusEnum implements Enumable{
// some fields && override methods;
}
// это десериализатор enum клиента
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 config
@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