У меня есть следующие Java Beans:Json полиморфизм с Джексоном и Json без объекта оболочки
/**
* The top container. It uses generics.
*/
public class Response {
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.WRAPPER_OBJECT,
property = "type"
)
@JsonSubTypes({
@JsonSubTypes.Type(name = "AContent", value = A.class),
@JsonSubTypes.Type(name = "BContent", value = B.class),
})
private E object;
}
/**
* First type
*/
@JsonRootName("AContent")
public class A {
...
}
/**
* Second type
*/
@JsonRootName("BContent")
public class B {
...
}
Когда запрос обрабатывается, я просто ожидать следующий вывод:
{
AContent: { ...}
}
Однако , Я получаю следующий результат:
{
object: {
AContent: { ...}
}
}
Элемент «AContent» завернут в элемент объекта. Я не хочу, чтобы объект-оболочка был общим. Я также не хочу устанавливать тип объекта непосредственно внутри общего объекта.
Я хотел бы вывести «AContent» непосредственно внутри корневого элемента.
Как мы можем достичь этого с Джексоном?
Заранее благодарю вас за помощь.
С наилучшими пожеланиями,
Желтая утка
Что касается сериализации, вы всегда можете использовать собственный сериализатор, который пропускает _Request_ и переходит прямо к _object_, но десериализация это сложнее. – chimmi
Я бы хотел, чтобы трикотаж/джексон автоматически сериализовал объект. Можно ли достичь этого с помощью аннотации jackson? – yellowduck
Существует еще одно решение, если вы можете позволить себе ввести базовый объект _A_ и _B_. – chimmi