当前位置: 首页 > 知识库问答 >
问题:

如何将不同XML元素的列表导入为具有jackson的单个字段

柏正平
2023-03-14

假设XML是:

<person>
  <friends>
    <human id="11"/>
    <human id="24"/>
    <dog id="31"/>
  </friends>
</person>

我希望结果是:

class Person {
  public List<Friend> friends;
}

class Friend {
  public int id;
}

最好Friend类也有一个带有“HumanDog”的“类型”字段,但我可以没有它。

我试图解决的问题是,XML列表是有序的,如果它作为人和狗的单独列表导入,则排序部分丢失。

共有1个答案

鄂昌胤
2023-03-14

如果您可以选择,最好更改XML结构以匹配对象模型。

<person>
  <friends>
    <friend type="human" id="11"/>
    <friend type="human" id="24"/>
    <friend type="dog" id="31"/>
  </friends>
</person>

否则,最好是使用JAXP将XML解析为自由格式的DOM,然后跟踪它以创建POJO模型。

JAXP教程:https://docs.oracle.com/javase/tutorial/JAXP/dom/readingxml.html

 类似资料:
  • 我在下面提到了xml字符串和团队类。我想使用jaxb将所有行元素转换为团队列表。

  • 在基于jax-rs的REST API项目中,我们使用Jackson jax-rs XML内容提供者来处理XML内容类型。在序列化POJO列表时,我们需要从POJO中的字段动态设置xml元素名称。 默认Jackson序列化XML: 我们的需求是,将type设置为XML元素名。 为了实现这一点,我们以以下方式编写了一个自定义XML序列化程序: 并使用注释添加了序列化程序: 但是,在使用Jackson

  • 问题内容: 我想将迭代器分为两个具有交替元素的列表。这是一个可行的解决方案。但是,有没有更简单的方法可以达到相同目的呢? 样本输出: 问题答案: 如果是一个序列,则: 如果是完全通用的可迭代对象,例如生成器:

  • 我是Jackson XML的新手,我需要在同一根元素下构造具有不同元素名称和属性的Jackson XML。 我期望的xml输出 我的pojo类(不确定如何添加剩余的元素和属性) 任何建议都将不胜感激。

  • 问题内容: 使用Jersey和Jackson创建REST接口,当其中包含0或1个元素时,如何将列表字段序列化为列表。例如: 当bar没有元素时,结果序列化为;当它包含单个元素时,结果序列化为该元素,而不是包含单个元素的数组。有没有办法让它们始终序列化为数组? 作为参考,我使用的是Jersey 1.10和Jackson 1.9.2。 问题答案: 我很确定您实际上并没有使用Jackson(JSON序列

  • 问题内容: 有没有办法让Jackson将单个JSON对象解释为具有一个元素的数组,反之亦然? 例如,我有2种略有不同的JSON格式,我需要两者都映射到相同的Java对象: 格式 A (带有一个元素的JSON数组): 格式 B (JSON对象,是的,我知道它看起来“错误”,但这就是我给的): 以上两种都应转换为的目标Java对象: 当前,只有 A 可以正确解析为Data。我想避免直接篡改JSON本身