我试图从Jackson 1.x升级到2.x.
我遇到问题的一个方面就是我使用自定义DeserializerFactory,它看起来像这样:
objectMapper.setDeserializerProvider(objectMapper.getDeserializerProvider()
.withFactory(myFactory));
setDeserializerProvider现在已经在Jackson2中消失了(虽然setSerializerProvider仍在那里)。我正在考虑使用SimpleModule,但这并不是我需要的。
这应该如何在2中起作用?
更新: 我觉得有必要强调它需要成为一个工厂。不只是注册反序列化器。
自定义工厂将信息传递给Deserializer,如下所示:
if (CollectionPage.class.equals(type.getRawClass())) {
final JsonDeserializer<Object> contentDeserializer = type.getContentType().getValueHandler();
return new MyCollectionDeserializer(type, contentDeserializer);
}
对于包含不同类型的集合,该值(contentDeserializer)在运行时是不同的。