为什么我的List没有在JAXB中序列化?

时间:2011-12-08 15:29:25

标签: java xml xml-serialization jaxb

我是使用JAXB的新手,我现在正在努力解决问题。也许你可以帮助我。

我有以下代码:

@XmlRootElement
public class Students implements Serializable{

private static final long serialVersionUID = 1L;

private List<Person> personList;
private int id;

// getters and setters for the attributes

}

 @XmlRootElement
 public class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name;
private int sex;

    //getters and setters for the attributes
 }

当我尝试使用JAXB封送学生时,我在结果字符串中只有id-Element。我没有名单(人)。这里的问题在哪里?

2 个答案:

答案 0 :(得分:6)

要整理List属性,您无需执行任何特殊操作。只需确保满足以下条件之一:

如果您正在使用JAXB参考实现并且具有List属性的getter但没有setter,那么您需要使用@XmlElement

注释getter
@XmlRootElement
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> personList;

    @XmlElement
    public List<Person> getPersonList() {
        return personList;
    }

}

如果您没有公共访问者,请确保使用字段访问权限:

@XmlRootElement
@XmlAccessorType(XmlAcceesType.FIELD)
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> personList;

}

如果你有List属性的getter和setter,那么你不需要做任何事情:

@XmlRootElement
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> person = new ArrayList<Person>();

    public List<Person> getPersonList() {
        return person;
    }

    public void setPersonList(List<Person> personList) {
        this.person = personList;
    }

}

了解更多信息

答案 1 :(得分:0)

嗯,尝试将类Person标记为@XmlType(我认为不是必需的),将Student和Person类的所有字段标记为@XmlElement