Deserialize XML с полиморфическим джексоном с использованием внешнего элементаJAVA

Программисты JAVA общаются здесь
Anonymous
Deserialize XML с полиморфическим джексоном с использованием внешнего элемента

Сообщение Anonymous »

У меня есть XML с полиморфическим , который имеет тип = и a сестры -Element, который в комбинации решает, какой подтип компонента я должен десеризировать в.

Код: Выделить всё

3

...


< /code>

2

...


< /code>

2

...


< /code>
и в Java что-то вроде этого: < /p>
@Data
public abstract class Component {
@JacksonXmlProperty(isAttribute = true)
private String type;
}
@Data public class Chair3 extends Component { String seat; }     // type=chair 3
@Data public class Chair2 extends Component { String backrest; } // type=chair 2
@Data public class Table  extends Component { String leg; }      // type=table *

@Data
public class Desk {
private String version;

@JacksonXmlElementWrapper(useWrapping = false)
private List component;
}
< /code>
Я экспериментировал с < /p>
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Chair3.class, name = "chair"), // version ???
@JsonSubTypes.Type(value = Table.class, name = "table")
})
, а также пользовательский TypeIdResolver Использование external_property . Но этот не работает для типов, поэтому это не сработало. Кроме того, мне нужно объединить версию и type каким -то образом.
Я подумал, что если я смогу внедрить версию в элемент DeserializationContext каким -то образом через SetAttribut потребует огромного переключателя .

Код: Выделить всё

@MyComponent(version="3", type="chair")
public class Char3 { ... }
, который можно оценить во время десерилиазации?

Подробнее здесь: https://stackoverflow.com/questions/797 ... al-element

Вернуться в «JAVA»