通过Jackson中的名称确定字段类型

时间:2019-11-06 20:38:58

标签: java json serialization jackson deserialization

我有一个接口,可以在其API中接收事件。 基本事件如下所示:

class Event<T extends Details> {
    T details;
}

示例实现如下所示:

class UpdateEvent extends Event<UpdateDetails> {

    @JsonProperty("updateDetails")
    UpdateDetails details;

}

在JSON中,我想对以下内容进行序列化/反序列化:

{
    "updateDetails": {...}
}

因此,我需要通过Json中的名称来确定详细信息字段的类型,并在反序列化时实例化Event类的相应子级。

我已经通过创建一个自定义反序列化程序来实现这一点,该程序可以检查details对象的确切名称,但是我不喜欢这种解决方案(由于JsonProperty批注,序列化可以直接使用)。杰克逊对此有解决方案吗?我无法使用标准的JsonTypeInfo注释来实现它(它总是将详细信息对象嵌套在JSON中的下一级,或者它将添加一个新的属性,不幸的是我无法做到)。

0 个答案:

没有答案