如何用Jackson反序列化不同深度的嵌套?

mo49yndu  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(159)

我有一个带有递归嵌套的xml:

<root>
  <groups>
    <group>
      <group_data>...group data...</group_data>
      <object>...object data...</object>
      <object>...object data...</object>
      <groups>
        <gropup>
          <group_data>...group data...</group_data>
          <object>...object data...</object>
          <groups>
            <group>
              <group_data>...group data...</group_data>
              <object>...object data...</object>
              <object>...object data...</object>
            </group>
            <group>
              <group_data>...group data...</group_data>
              <object>...object data...</object>
            </group>
          </goups>
        </group>
      </groups>
    </group>
  </groups>
</root>

嵌套深度可以是任意的。
如何收集所有具有全链组数据的对象?
就像这样:

class Item {
    private ItemData item;
}

class Group {
    private String groupData;
    private List<Group> groups;
    private List<Item> Items;
}

class ItemData {
    private String itemName;
}

如何在Jackson中注解递归结构?

gtlvzcf8

gtlvzcf81#

Jackson没有针对递归样式对象的特殊注解。它将处理任何引用,无论是否递归。
这应该可以实现您想要的功能:(你可能需要Lombok或者getters、setters、default constructor)

@XmlRootElement(name = "root")
class Root {
    private List<Group> groups;
}

@XmlRootElement(name = "object") 
class Item {
    private ItemData item;
}

class Group {
    @JsonProperty("group_data")
    private String groupData;
   

    private List<Group> groups;

    @JacksonXmlElementWrapper(useWrapping = false)
    private List<Item> items;

}

class ItemData {
    private String itemName;
}

相关问题