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

Java 如何将Jackson mixin添加到阅读器而不是objectmapper?,java,json,jackson,Java,Json,Jackson,我有一个对象,我想在程序的一部分中使用属性序列化,但在另一部分中不使用属性。我还有一个ObjectMapper,它是广泛定制的,用于两种序列化。我的第一个倾向是使用Mixin来调整属性是否显示,但似乎只能将它们放在ObjectMapper上,而不能放在ObjectMapper返回的读取器上。基本上,我希望能够编写的代码如下所示 ObjectMapper myMapper = new ObjectMapper(); // in reality there is a lot of customiza

我有一个对象,我想在程序的一部分中使用属性序列化,但在另一部分中不使用属性。我还有一个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);

实际上,您可以将mixin配置为序列化或反序列化(当然也可以同时配置这两者):


正确。但是,您不能动态更改混合插件:因为它们用于(反)序列化程序的内省,并且结果(实际的(反)序列化程序)是缓存的,所以必须将它们添加为初始配置的一部分。 这就是为什么
ObjectReader
ObjectWriter
都不公开更改混合的方法的原因:它们只允许在每次调用的基础上更改可以动态更改的内容

但也许混入并不是实现这一点的最佳方式:您是否考虑过使用它?可以为每个(反)序列化单独更改正在使用的活动视图

objectMapper.getSerializationConfig().addMixInAnnotations(Rectangle.class, MixIn.class);
objectMapper.getDeserializationConfig().addMixInAnnotations(Rectangle.class, MixIn.class);