我正在尝试使用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>

最佳答案

我认为,实现此目标的唯一方法是启用多态类型。因此,您可以尝试在所涉及的属性上添加@JsonProperty,且包含类型为As.WRAPPER_OBJECT
然后,将使用“类型ID”作为元素,这就是您想要的。但是有一件事,我不能100%地确定是否要尝试其中是否还有多余的元素。尝试起来应该很容易,看看结果是什么样子。

关于java - 接口(interface)的Jackson序列化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26473423/

10-10 05:58