【发布时间】:2015-02-05 22:04:08
【问题描述】:
我有以下 POJO 类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Folder", propOrder = {
"id",
"parent"
})
@XmlSeeAlso({
FolderTree.class
})
public class Folder
{
protected int id;
protected int parent;
getters, setters...
}
和
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "FolderTree", propOrder = {
"subFolders"
})
@XmlRootElement(name = "folderTree")
public class FolderTree extends Folder
{
@XmlElement(name = "subFolder", type = Folder.class)
protected List<Folder> subFolders;
getter...
}
和一个包装器:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Folders", propOrder = {
"folders"
})
@XmlRootElement(name = "folders")
public class Folders
{
@XmlElement(name = "folder", type = Folder.class)
protected List<Folder> folders;
getter...
}
我需要在 XML 和 JSON 中对它们进行序列化和反序列化。 XML 工作正常,但 JSON 序列化为以下结构:
{
"folder": [
{
"subFolder": [
{
"subFolder": [],
"id": 2,
"parent": 1
},
{
"subFolder": [],
"id": 3,
"parent": 1
}
],
"id": 1,
"parent": null
}
]
}
反序列化程序无法识别 subFolder 对象中的第二个字段 subFolder(“subFolder”:[])。有没有办法让它只在父文件夹中包含 subFolder 字段?或者可以做些什么来让 Jackson 按原样反序列化该对象?
我无法更改 POJO 类,因为它们是由 jaxb 创建的,并且一切都可以正常使用 XML。
【问题讨论】: