Преобразование Обертки Списка в Список, используя JAXB - PullRequest
3 голосов
/ 09 декабря 2010

Я пытаюсь аннотировать набор объектов данных аннотациями привязки JAXB, чтобы этот набор объектов данных можно было правильно маршалировать как JSON с использованием CXF.Я сталкиваюсь с проблемой с классом, который по сути является просто оболочкой для 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 голосов
/ 09 декабря 2010

Я не уверен, что вы можете с дополнительным классом-оберткой вокруг него.Разве вы не можете просто сделать список возврата вызова getDataIds ()?

...