0

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

我已经实现了 JacksonDeserializers接口并覆盖了一堆回调:findBeanDeserializer, findBeanDeserializer, ... 但是,当解析器看到键值对并根据它采取不同的行动findEnumDeserializer时,这并不能让我捕捉到事件。class:ClassName

任何帮助或指示将不胜感激。

一个示例 JSON

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

1 回答 1

1

我希望您没有花太多时间编写自定义内容。您可以开箱即用地使用注释@JsonTypeInfo(请参阅javadoc):它使 Jackson 自动读取/写入其他类型信息。一种可能的包含机制是As.PROPERTY,在这种情况下,类名(或类型名)被添加为要使用的虚拟属性。属性名称也可以自定义。

于 2013-08-13T23:04:02.067 回答