1

在 1.9 代码中我们使用了 objectMapper.getDeserializationConfig.addMixInAnnotations 和 objectMapper.getSerializationConfig.addMixInAnnotations。在 2.2 中,这似乎不再可能,必须通过模块来完成。这个对吗?在一个模块中,它看起来会注册带有序列化器和反序列化配置的混入。在我正在升级的一些代码中,序列化程序配置比反序列化程序配置多,我想知道是否有办法在 2.2 中复制此配置。

陈述我的问题的另一种方式是,您可以在 2.2 中添加 mixin 并指定它们仅适用于序列化等吗?还是反序列化?

4

1 回答 1

1

我在杰克逊论坛上得到了答案。几天后我没有得到回复,而且时间对我来说已经不多了,所以在这种情况下,我在这里发布了另一种选择。

我对 2.x 的假设是,主要的用例是混入适用于序列化和反序列化,最常见的方法是直接通过添加它们ObjectMapper,或者使用模块方法。更改了底层实现以尝试保持映射器本身以外的对象不可变;混音设置的统一更多是其结果(和一般的简化),而不是目标。如果确实需要单独的混入,最好的方法是构造单独的 ObjectMappers。虽然SerializationConfigDeserializationConfig请继续参考(可能)不同的混音集,我看不到使用它的方法。另外:如果需要分离,您可以在 github 问题跟踪器(对于项目 jackson-databind)提出功能请求。我不知道重新添加支持有多容易,但如果它是你真正需要的东西,值得提出建议。实现级别的挑战是混入是必须在之前设置的基本功能任何实际的序列化或反序列化(因为它会影响序列化器/反序列化器的构建方式;并且由于缓存,即使修改了混合集,效果也会持续)。

于 2013-08-13T18:49:15.443 回答