Jackson 2.2 mixins - 从1.9新模块api升级

时间:2013-08-12 18:18:58

标签: jackson

在我们使用的1.9代码中 objectMapper.getDeserializationConfig.addMixInAnnotations和 objectMapper.getSerializationConfig.addMixInAnnotations。 在2.2中似乎不再可能,它必须通过模块完成。它是否正确? 在模块中,它看起来会在串行​​器和反序列化配置中注册混合。在我升级的一些代码中,有比串行器配置更多的串行器配置,我想知道是否有一种方法可以在2.2中复制此配置。

说明我的问题的另一种方法是你可以在2.2中添加mixin并指定它们仅适用于序列化等吗?或反序列化?

1 个答案:

答案 0 :(得分:1)

我在杰克逊论坛上得到了答案。几天之内我没有收到回复,时间已经不多了,所以在这种情况下我在这里发布了另一个选项。

  

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