【发布时间】:2022-12-15 05:31:16
【问题描述】:
使用 SimpleXML 在 Java 中序列化可能包含不同类型元素的列表,您可以使用诸如
class Root {
@ElementListUnion({
@ElementList(entry = "Foo", type = Foo.class, inline = true),
@ElementList(entry = "Bar", type = Bar.class, inline = true)
})
protected List<Object> fooOrBar;
}
这最终将被序列化为
<Root>
<Foo>
{correct Foo serialization}
</Foo>
<Bar>
{correct Bar serialization}
</Bar>
</Root>
@ElementListUnion 是否有任何 Jackson 替代方案或解决方法?我可以创建一个自定义序列化程序——我将如何创建一个只会根据类型更改名称的自定义序列化程序?
使用 Jackson 时,我似乎无法找到实现相同目标的方法。使用@JacksonXmlElementWrapper 和/或JacksonXmlProperty 可以获得的最接近结果是类似于
<Root>
<fooOrBar>
{correct Foo serialization}
</fooOrBar>
<fooOrBar>
{correct Bar serialization}
</fooOrBar>
</Root>
【问题讨论】:
标签: java jackson xml-parsing simplexml jackson-dataformat-xml