0

我正在尝试从 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) 在运行时是不同的。

4

0 回答 0