在junit中用jackson做反序列化的时候报错
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of
***
(no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
原因是用了2个class继承一个interface,反序列化interface时无法找到用哪个class结果出了异常,网上能搜到的解决方法是写个配置类,如:@Bean注解创建ObjectMapper、重写configureMessageConverters方法。
发现了一个更简单的方式,是在属性中加@JsonDeserialize注解如:
//这里I是interface I2是I的实现类 @JsonDeserialize(contentAs=I2.class) public interface I{ Integer a; }
这样Junit中的反序列化就能跑通了