我有一个很大的类集(比100多),它们都是从一些抽象类扩展而来,我们称之为ParentClass
。我们可以调用子类ChildA
,ChildB
等。我如何为所有孩子注册自定义反序列化器,并在Deserializer内部获得类类型? 我想:杰克森定制解串器模块抽象类
module.addDeserializer(ParentClass.class, new MyObjectDeserializer());
,但它不工作。
我想跳过做什么(什么是工作):
module.addDeserializer(ChildA.class, new MyObjectDeserializer(ChildA.class));
module.addDeserializer(ChildB.class, new MyObjectDeserializer(ChildB.class));
module.addDeserializer(ChildC.class, new MyObjectDeserializer(ChildC.class));
//etc......
类的类型应该是已知的,因为我是用杰克逊春天@RequestBody方法,什么都没有定义的类名。 任何想法如何做到这一点?
如果您使用的是同一个父解序器,是否需要注册所有这些子类?也许你应该定义你的控制器函数来接收父类,并以其他方式区分子类。 – hofan41
这不是一个好的解决方案。处理直接类很容易,而是创建一个将它们与抽象区分开来的机制。 (另外,我们在具体类中有很多代码)。 – Tom
我认为这是杰克逊的一个错误。我提出了一个问题:https://github.com/FasterXML/jackson-databind/issues/1784 –