首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jersey编组成员列表问题

Jersey编组成员列表问题
EN

Stack Overflow用户
提问于 2012-09-14 23:52:03
回答 3查看 190关注 0票数 4

我正在使用Java Jersey 1.x编组一个具有多个成员的对象,其中一个成员是一个列表。所有成员变量都被正确地编组,并以正确的返回类型返回。但是,它不会在返回数据中包含objectList

示例:

代码语言:javascript
运行
复制
@XmlRootElement
public class ClassWithList {
    private String front;
    private int total;
    private ArrayList<AnotherPOJOObject> objectList;
...
getters/setters

Getter:

代码语言:javascript
运行
复制
public List<AnotherPOJOObject> getObjectList() {
    return objectList;
}

我对它进行了调试,并检查了objectList是否确实填充了数据。AnotherPOJOObject也被标注为XmlRootElement

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-16 22:45:00

多亏了basiljames的建议,我才能更接近答案。真正的问题是,AnotherPOJOOject的列表毕竟不是那么简单。每个对象都有自己的一个非类型化的Map,这让编组器大吃一惊,因为它总是想知道对象的类型。

我猜这个答案的要点是确保您返回的每个集合都有一个定义良好的类型!

票数 0
EN

Stack Overflow用户

发布于 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不会序列化它。要获得要序列化的列表,您可以:

  • 为objectList
  • Declare objectList添加一个公共的setter方法作为公共(可能不是一个好主意)
  • 将一个@XmlElement批注添加到getter中,以显式地告诉
  • 将列表封送到XML.
票数 1
EN

Stack Overflow用户

发布于 2012-09-15 14:03:00

我也曾遇到过同样的问题,并在经过反复试验后得到了解决。

尝试将批注@XmlElementWrapper(name = "orders")赋给getObjectList(),并将类型设为private List<AnotherPOJOObject> objectList;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12427944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档