У меня есть класс Transport.java
public class Transport {
private TransportDetails transportDetails;
@JsonTypeInfo(use = Id.NAME, include = As.EXTERNAL_PROPERTY, property = "transportType")
@JsonSubTypes({
@Type(value = PublicTransport.class, name = "Public"),
@Type(value = PrivateTransport.class, name = "Private")
})
private TransportMode transportMode;
...
}
TransportDetails.java определяется следующим образом:
public class TransportDetails {
private String transportType;
private String transportCost;
private String transportDurationInMins;
...
}
TransportMode.java - это интерфейс
public interface TransportMode {
}
У меня есть два класса PublicTransport.java и PrivateTransport.java , которые реализуют TransportMode.java interface.
public class PublicTransport implements TransportMode {
private String origin;
private String destination;
private String carryingCapacity;
...
}
public class PrivateTransport implements TransportMode {
private String brand;
private String model;
private String insuranceStatus;
...
}
actionType in TransactionDetails.java может быть Public или Private, на основе которого должна выполняться десериализация.
{"transportDetails":{"transportDurationInMins":"45","transportCost":"20","transportType":"Private"},"transportMode":{"model":"car model","insuranceStatus":"Full","brand":"car brand"}}
При попытке десериализации выше JSON в объект транспорта я получаю следующую ошибку:
Неожиданный токен(END_OBJECT), ожидаемый VALUE_STRING: нужна строка JSON, содержащая идентификатор типа
Можно ли каким-либо образом получить доступ к actionType в Transport.java классе для выполнениядесериализации?