解决jackson反序列化抽象类属性时报错:abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
使用springboot的@RequestBody接收参数时,遇到报错abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information。
接收的参数含有接口类型的字段,导致jackson不知道反序列化成什么实例
- 解决:
@Configuration
public class JsonConfig {
@Bean
public ObjectMapper getJacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
SimpleModule simpleModule = new SimpleModule();
SimpleAbstractTypeResolver simpleAbstractTypeResolver = new SimpleAbstractTypeResolver();
// 添加接口映射子类
simpleAbstractTypeResolver.addMapping(DoudianOpClient.class, DefaultDoudianOpClient.class);
simpleModule.setAbstractTypes(simpleAbstractTypeResolver);
objectMapper.registerModule(simpleModule);
return objectMapper;
}
}