我使用Jackson自定义反序列化器来解析JSON文件。在这个文件中有一堆带有键“class”的条目,并且值为类的名称(没有完整的包名)。反序列化器知道一堆预定义(硬)路径来搜索任何类。自定义反序列化器应查找关键字“class”(在解析JSON时),然后根据值(类名称字符串),搜索预定义路径并使用匹配的类名实例化对象。
我已经实现了杰克逊Deserializers
界面并覆盖了一堆回调:findBeanDeserializer
,findBeanDeserializer
,findEnumDeserializer
...
但是,当解析器看到class:ClassName
键值对并基于此行为不同时,这不会让我抓住事件。
任何帮助或指示都将深受赞赏。
示例JSON
{
"class": "X",
"fieldName1": {
"class": "Y",
}
...
}
答案 0 :(得分:1)
我希望你不要花太多时间写自定义的东西。开箱即用的是注释@JsonTypeInfo
(参见javadoc):它使Jackson自动读/写其他类型信息。一种可能的包含机制是As.PROPERTY
,在这种情况下,类名(或类型名称)被添加为要使用的虚拟属性。
物业名称也可以自定义。