Подтвердить что ты не робот

Структура SimpleXml - встроенные коллекции

Я пытаюсь сериализовать встроенную коллекцию, используя простую. Например:

Map<String, List<MyClass>>

Я уже добавил необходимые аннотации в MyClass, я попытался с помощью @ElementMap, но он не работает: Exception in thread "main" org.simpleframework.xml.transform.TransformException: Transform of class java.util.ArrayList not supported

Если его просто

@ElementMap Map<String, MyClass>

он отлично работает. Я не знаю, как справиться со встроенной коллекцией. Я знаю о @ElementList аннотации, но не знаю, как ее использовать в этом случае. Любые подсказки?

4b9b3361

Ответ 1

Я сталкиваюсь с той же проблемой. Единственный способ, которым я смог заставить его работать, был действительно дрянным списком перехвата в другом классе.

public class MyWrapper {

    @ElementList(name="data")
    private List<MyClass> data = new ArrayList<MyClass>();

    public MyWrapper(List<MyClass> data) {
        this.data = data;
    }

    public List<MyClass> getData() {
        return this.data;
    }

    public void setData(List<MyClass> data) {
        this.data = data;
    }

}

И затем вместо

@ElementMap Map<String,List<MyClass>>

... у вас будет:

@ElementMap Map<String,MyWrapper>

В моем случае карта полностью закрыта для моего класса (т.е. другие классы никогда не могут напрямую общаться с Картой), поэтому тот факт, что у меня есть этот дополнительный уровень здесь, не имеет большого значения. Разумеется, XML, который создается, является грубым, но опять же, в моем случае, он терпимо, потому что нет ничего вне моего класса, который его потребляет. Хотел бы я иметь лучшее решение, чем это, но на данный момент я в тупике.