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

Ton*_*780 3 java xml jaxb xml-serialization

我是使用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

}
Run Code Online (Sandbox Code Playgroud)

 @XmlRootElement
 public class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name;
private int sex;

    //getters and setters for the attributes
 }
Run Code Online (Sandbox Code Playgroud)

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

bdo*_*han 6

编组List属性没有什么特别之处.只需确保满足以下条件之一:

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

@XmlRootElement
public class Students implements Serializable{

    private static final long serialVersionUID = 1L;

    private List<Person> personList;

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

    private static final long serialVersionUID = 1L;

    private List<Person> personList;

}
Run Code Online (Sandbox Code Playgroud)

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

@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;
    }

}
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息