使用JAXB将List包装器转换为List

时间:2010-12-08 23:58:46

标签: java json jaxb cxf binding

我正在尝试使用JAXB绑定注释来注释一组数据对象,以便可以使用CXF将这组数据对象正确地封送为JSON。我遇到的问题是一个基本上只是ArrayList包装的类:

class IntegerListWrapper {
    private ArrayList<Integer> integerList;
    ...
}

我的一些数据对象引用了这个类:

class DataObjectFoo {
    ...
    public IntegerListWrapper getDataIDs() {
        ...
    }
    ...
}

我正在寻找输出:

"DataObjectFoo" : {
  "dataIDs" : [1, 2, ..., n] // Array of Data IDs
}

我试过注释IDList类本身,但它给我留下了这个:

"DataObjectFoo" : {
  "dataIDs" : { "integerList" : [1, 2, ..., n] } // Extra nesting
}

我尝试编写一个XmlAdapter,但结果好坏参与:

// Throws an error... "Can't bind to interface"
public final class IDListAdapter extends XmlAdapter<List<Integer>, IDList> {
// Does not produce any output
public final class IDListAdapter extends XmlAdapter<ArrayList<Integer>, IDList> {
// Produces output with extra nesting like above
public final class IDListAdapter extends XmlAdapter<Integer[]>, IDList>

所以我有两个问题:

  1. 如何获得所需的输出(不将IDList转换为我的数据对象中的其他内容)?
  2. 为什么第二个XmlAdapter(使用ArrayList)不产生输出?

1 个答案:

答案 0 :(得分:0)

我不确定你是否可以使用额外的包装类。你能不能让“getDataIds()”调用返回List吗?