Я ищу способ (де) сериализации List
предметов без использования аннотаций в Джексоне. Это возможно? До сих пор я пытаюсь заменить тег <item>
тегом, указывающим на класс элемента, но безрезультатно. И даже если это сработало, я не уверен, предложит ли Джексон способ обработки этой информации тега.
Чтобы лучше понять, к чему я стремлюсь, вот пример:
public class JacksonTest {
private static class ListElement {
private boolean value;
// getters, setters, constructors omitted
}
@Test
public void testDeSerialization() throws Exception {
final List<ListElement> existing = Arrays.asList(new ListElement(true));
final ObjectMapper mapper = new XmlMapper();
final JavaType listJavaType = mapper.getTypeFactory().constructCollectionType(List.class, ListElement.class);
final String listString = mapper.writerFor(listJavaType).writeValueAsString(existing);
System.out.println(listString);
// "<List><item><value>true</value></item></List>"
}
}
Итак, результат равен <List><item><value>true</value></item></List>
, хотя я хочу, чтобы тег <item>
был заменен (квалифицированным) именем класса или предлагался атрибут type
.
Конечно, даже это не помогло бы, если бы в Джексоне не было способа обработать это имя класса.
Здесь я зашел в тупик или есть путь?