Jackson & Spring MVC может десериализовать класс enum, но не может десериализовать интерфейс enum - PullRequest
0 голосов
/ 17 марта 2019

У меня есть проект, основанный на 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...