Jackson-SimpleXML的@ElementListUnion的替代方案

k5hmc34c  于 2023-02-12  发布在  其他
关注(0)|答案(1)|浏览(89)

在Java中使用SimpleXML序列化可能包含不同类型元素的列表,您可以执行如下操作

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>
xv8emn3q

xv8emn3q1#

目前没有Jackson的@ElementListUnion替代方案或解决方法。

相关问题