杰克逊接口序列化

时间:2014-10-20 19:28:42

标签: java xml serialization jackson

我正在尝试使用Jackson-datatype-xml将java对象序列化为XML。这样做时,我有一个界面,如:

interface SpecificationType {...}

class FreeText implements SpecificationType {...}

class Selection implements SpecificationType {...}

由于这个接口,我有另一个类将它用作字段:

class Question {

    private final SpecificationType specificationType;

    ....

}

问题在于,当我将其序列化为XML时,标记将为SpecificationType,当我希望它反映具体类FreeText时(例如)。杰克逊有没有办法做到这一点?

例如

我明白了:

<SpecificationType>...</SpecificationType>

我想:

<FreeText>...</FreeText>

1 个答案:

答案 0 :(得分:2)

我认为实现这一目标的唯一方法是启用多态分类。因此,您可以尝试在相关媒体资源上添加@JsonProperty,其中包含类型为As.WRAPPER_OBJECT。 然后,这将使用“type id”作为您想要的元素。但有一件事我不是百分之百确定没有尝试它是否会有一个额外的元素;它应该很容易尝试,看看结果是什么样的。