Вот мой класс иерархии:Джексон - не может сериализовать дженерики
Банан Класс:
@JsonTypeName("banana")
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@type")
public class Banana<T, M> extends Fruit<T, M> {
Фруктовый класс:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonSubTypes({ @JsonSubTypes.Type(value = Banana.class, name = "banana")})
public class Fruit<T, M> {
private boolean ok;
private T main;
Класс автомобиля:
@JsonTypeName("car")
public class Car extends Vehicle {
Аннотация Vehicle класс:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({ @JsonSubTypes.Type(value = Car.class), @JsonSubTypes.Type(value = AnyOtherClass.class) })
public abstract class Vehicle<K> {
private Date date;
private Id<?> id;
Так я создаю новый объект:
Banana<Car, String> ba = new Banana<Car, String>();
Car car = new Car("test");
ba.setMain(car);
объект Банан имеет свойство "@type".
объектАвтомобиль имеет свойство «тип», и если я сериализовать автомобиль как JSON он печатает:
{"type":"car"}
Однако, если я сериализовать банан, как JSON печатает (только «типа»: «автомобиль» является отсутствуют другие свойства объекта доступны):
{}
Если я banana.getMain() он печатает
{"type":"car"}
Как возможно?
Я попытался простой объект (не автомобиль) без каких-либо аннотаций и она отлично работает, как он печатает
{"type":"car"}
Попросите кого-нибудь какую-нибудь идею Thats происходит?
могли бы вы предоставить полный исходный код ваших классов? Также вы можете попробовать, если у вас все еще есть проблема, если вы не продлеваете автомобиль и фрукты? – toongeorges
Он отлично работает с POJO. – Laurynas