Имам доста сложно дърво на обекти (основно се опитвам да сериализирам обекти в XML). Обектите могат да съдържат други обекти от същия тип или друг и т.н.
Както и да е, анотирах псевдонима на всеки клас и той работи добре до известна степен. Когато нивото на влагане е над 3, псевдонимите спират да работят.
Аз например имам
private List<Object> values = new ArrayList<>();
Това съдържа обекти с пояснен псевдоним. Но те вече не работят тук, получавам общото име на класа.
Ако анотирам нещо подобно
@XStreamAlias(value = "value-date", impl = ValueDate.class)
private List<Object> values = new ArrayList<>();
работи, но не мога да използвам анотацията няколко пъти. В идеалния случай бих направил следното:
@XStreamAlias(value = "value-text", impl = ValueText.class)
@XStreamAlias(value = "value-boolean", impl = ValueBoolean.class)
@XStreamAlias(value = "value-date", impl = ValueDate.class)
private List<Object> values = new ArrayList<>();
Бих очаквал нещо подобно
<values>
<value-date>1999-08-31</value-date>
</values>
Но разбирам
<values>
<sql-date>1999-08-31</sql-date>
</values>
Моят клас изглежда така
@XStreamAlias("value-date")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "date" })
public class ValueDate {
private Date date;
Надявам се, че е ясно какво се опитвам да кажа :-)
Току що започнах с XStream, защото JAXB ме подлудяваше ;-)
Благодаря за всякакви съвети!