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