Пытаюсь распарсить строку xml следующим образом:
XmlMapper xmlMapper = new XmlMapper();
TransitionWidget diagram = xmlMapper.readValue(xml, TransitionWidget.class);
diagram.toString();
Абстрактный класс виджета:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = StateWidget.class, name = "State"),
@JsonSubTypes.Type(value = TransitionWidget.class, name = "Transition")
})
public abstract class Widget {
private Integer id;
private final String type;
protected Widget(String type) {
this.type = type;
}
@JacksonXmlProperty(isAttribute = true)
public Integer getId() {
return id;
}
@JacksonXmlProperty(isAttribute = true)
public String getType() {
return type;
}
}
Пример наследника класса:
@JacksonXmlRootElement(localName = "widget")
public class TransitionWidget extends Widget {
private TransitionAttributes attributes;
public TransitionWidget() {
super("Transition");
}
@JacksonXmlProperty(localName = "attributes")
public TransitionAttributes getAttributes() {
return attributes;
}
}
Его аттрибуты:
public class TransitionAttributes {
private Event event;
private List<Action> action;
@JacksonXmlProperty(localName = "action")
@JacksonXmlElementWrapper(useWrapping = false)
public List<Action> getAction() {
return action;
}
}
При парсинге поле actions остается пустым, а event корректно заполняется. При этом если убрать наследование extends, то actions тоже заполняется. Как можно это исправить? @JsonSubTypes не работают с XmlMapper?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости