我有一个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 {
}
我有两个实现PublicMode.java接口的类PublicTransport.java和PrivateTransport.java。
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;
...
}
transportType
在Public
或Private
中可以是要反序列化的基础。
{
"transportDetails": {
"transportDurationInMins": "45",
"transportCost": "20",
"transportType": "Private"
},
"transportMode": {
"model": "car model",
"insuranceStatus": "Full",
"brand": "car brand"
}
}
在尝试将上述JSON反序列化为Transport对象时,出现以下错误:
Unexpected token (END_OBJECT), expected VALUE_STRING: need JSON String that contains type id
有什么方法可以访问Transport.java类中的transportType
来执行反序列化吗?