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