【问题标题】:Jackson Custom Deserialization for Mapping Class Name String to Actual Class Definition用于将类名称字符串映射到实际类定义的 Jackson 自定义反序列化
【发布时间】:2013-08-12 21:14:24
【问题描述】:

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

我已经实现了 Jackson Deserializers 接口并重写了一堆回调:findBeanDeserializerfindBeanDeserializerfindEnumDeserializer... 但是,当解析器看到 class:ClassName 键值对并据此采取不同的行动时,这并不能让我捕捉到事件。

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

JSON 示例

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

【问题讨论】:

标签: java json jackson json-deserialization


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2011-11-13
    相关资源
    最近更新 更多