Я пытаюсь сериализовать встроенную коллекцию, используя простую.
Например:
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
аннотации, но не знаю, как ее использовать в этом случае. Любые подсказки?
Ответ 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, который создается, является грубым, но опять же, в моем случае, он терпимо, потому что нет ничего вне моего класса, который его потребляет. Хотел бы я иметь лучшее решение, чем это, но на данный момент я в тупике.