如何将Jackson mixin添加到阅读器而不是objectmapper?

Ran*_*ggs 5 java json jackson

我有一个对象,我想在程序的一个部分中使用属性序列化,但没有不同的部分.我还有一个ObjectMapper,它被广泛定制,我用于两个序列化.我的第一个倾向是使用Mixin调整属性是否显示,但似乎只能将它们放在ObjectMapper上,而不是放在ObjectMapper返回的阅读器上.基本上我希望能够编写的代码如下所示.

ObjectMapper myMapper = new ObjectMapper(); // in reality there is a lot of customization
Foo foo = myMapper.reader().withMixin(Foo.class, FooMixin.class).readValue(jsonParser, Foo.class);
Run Code Online (Sandbox Code Playgroud)

Sta*_*Man 5

正确.但是,您无法动态更改混合:由于它们用于(de)序列化程序的内省,并且结果(实际(反)序列化程序)被缓存,因此必须将它们作为初始配置的一部分添加.这就是为什么既不公开ObjectReader也不ObjectWriter公开改变混合的方法的原因:它们只允许在每个呼叫的基础上改变可以动态改变的东西.

但也许混合不是最好的方法:你考虑使用JSON视图吗?可以针对每个(反)序列化单独更改正在使用的活动视图.