我正在尝试使用 Jackson-datatype-xml 将 java 对象序列化为 XML。这样做时,我有一个界面,例如:
interface SpecificationType {...}
class FreeText implements SpecificationType {...}
class Selection implements SpecificationType {...}
由于这个接口(interface),我有另一个类将它用作字段:
class Question {
private final SpecificationType specificationType;
....
}
问题是,当我将其序列化为 XML 时,当我希望它反射(reflect)具体类 FreeText
(例如)时,标记将是 SpecificationType
。 jackson 有办法做到这一点吗?
例如。
我得到:
<SpecificationType>...</SpecificationType>
我想要:
<FreeText>...</FreeText>
最佳答案
我认为,实现这一目标的唯一方法是启用多态类型。因此,您可以尝试在相关属性上添加 @JsonProperty
,包含类型为 As.WRAPPER_OBJECT
。
然后,这将使用“type id”作为元素,这就是您想要的。但有一件事,在没有尝试的情况下,我不能百分百确定其中是否会有额外的元素;尝试一下并查看结果应该很容易。
关于java - Jackson 接口(interface)序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473423/