Jackson&Spring MVC可以反序列化枚举类,但是不能反序列化枚举的接口

时间:2019-03-17 04:05:04

标签: spring spring-boot spring-mvc enums jackson

我有一个基于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项目

0 个答案:

没有答案