我正在使用Java Jersey 1.x编组一个具有多个成员的对象,其中一个成员是一个列表。所有成员变量都被正确地编组,并以正确的返回类型返回。但是,它不会在返回数据中包含objectList。
示例:
@XmlRootElement
public class ClassWithList {
private String front;
private int total;
private ArrayList<AnotherPOJOObject> objectList;
...
getters/settersGetter:
public List<AnotherPOJOObject> getObjectList() {
return objectList;
}我对它进行了调试,并检查了objectList是否确实填充了数据。AnotherPOJOObject也被标注为XmlRootElement
发布于 2012-09-16 22:45:00
多亏了basiljames的建议,我才能更接近答案。真正的问题是,AnotherPOJOOject的列表毕竟不是那么简单。每个对象都有自己的一个非类型化的Map,这让编组器大吃一惊,因为它总是想知道对象的类型。
我猜这个答案的要点是确保您返回的每个集合都有一个定义良好的类型!
发布于 2012-09-15 01:31:21
看看http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/annotation/XmlAccessorType.html吧。本文详细介绍了JAXB将如何尝试序列化POJO。特别要注意的是,它默认只使用公共成员-这意味着“每个公共getter/setter对和每个公共字段都将自动绑定到XML,除非使用XmlTransient注释”。在本例中,我猜您没有objectList的公共setter字段,所以JAXB不会序列化它。要获得要序列化的列表,您可以:
@XmlElement批注添加到getter中,以显式地告诉发布于 2012-09-15 14:03:00
我也曾遇到过同样的问题,并在经过反复试验后得到了解决。
尝试将批注@XmlElementWrapper(name = "orders")赋给getObjectList(),并将类型设为private List<AnotherPOJOObject> objectList;
https://stackoverflow.com/questions/12427944
复制相似问题