用于将类名称字符串映射到实际类定义的Jackson自定义反序列化

时间:2013-08-12 21:14:24

标签: java json jackson json-deserialization

我使用Jackson自定义反序列化器来解析JSON文件。在这个文件中有一堆带有键“class”的条目,并且值为类的名称(没有完整的包名)。反序列化器知道一堆预定义(硬)路径来搜索任何类。自定义反序列化器应查找关键字“class”(在解析JSON时),然后根据值(类名称字符串),搜索预定义路径并使用匹配的类名实例化对象。

我已经实现了杰克逊Deserializers界面并覆盖了一堆回调:findBeanDeserializerfindBeanDeserializerfindEnumDeserializer ... 但是,当解析器看到class:ClassName键值对并基于此行为不同时,这不会让我抓住事件。

任何帮助或指示都将深受赞赏。

示例JSON

{
    "class": "X",
    "fieldName1": {
        "class": "Y",
    }
    ...
}

1 个答案:

答案 0 :(得分:1)

我希望你不要花太多时间写自定义的东西。开箱即用的是注释@JsonTypeInfo(参见javadoc):它使Jackson自动读/写其他类型信息。一种可能的包含机制是As.PROPERTY,在这种情况下,类名(或类型名称)被添加为要使用的虚拟属性。 物业名称也可以自定义。