java - Jackson 接口(interface)序列化

标签 java xml serialization jackson

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

相关文章:

java - java中循环跳过所有其他输入的问题

java - j2objc/usr/local/lib//libprotobuf.a(strutil.o) ld : 55 duplicate symbols for architecture x86_64

xml - 尝试使用 XML::LibXML 模块拆分 XML 文件时出错

java - 如何正确从文件加载 JFrame?

JAVA - 解析巨大(超大)JSON 文件的最佳方法

java - 如何避免在编辑文本中编辑特定字符

xml - Go XML - 解析 HTML 中的 bool 属性导致 XML 验证错误

php - XML 解析错误 : no root element found Location

java - 从 Kafka Streams 反序列化对象时出错

c# - 如何将 SAme 类的多个对象序列化为单个文件并在 C# 中反序列化为这些对象