Проблема
Нет ничего, что указывало бы на класс, по которому нужно выполнить маршал: {"name":"Sienna"}
.Как мог бы fastxml, возможно, угадать, какой тип он должен маршалировать.
Одно решение
Сначала включите типизацию по умолчанию:
objectMapper.enableDefaultTyping();
Затем рассмотрите возможность использованияобъект-обертка вокруг фактической полезной нагрузки:
public class Wrapper {
private Object content;
public Wrapper() {
}
public Wrapper(Object content) {
this.content = content;
}
public Object getContent() {
return content;
}
public void setContent(Object content) {
this.content = content;
}
}
Затем записать объект:
String customerMessage = objectMapper.writeValueAsString(new Wrapper(collectionObject));
Затем прочитать объект:
Object genericObject = objectMapper.readValue(messageFromQueue, Wrapper.class).getContent();
В этом случае genericObject
будет CollectionObject
, а JSON {"content":["CollectionObject",{"name":"Sienna"}]}