Получение исключения, указанного в заголовке. Почему библиотека Джексона 2 предполагает, что идентификатор типа 'C' является подклассом StatusEventObject, поскольку я утверждаю, что это подкласс события в аннотациях события?
Вот классы
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "ev")
@JsonSubTypes({
@JsonSubTypes.Type(value = ForexQuoteObject.class, name = "C"),
@JsonSubTypes.Type(value = StatusEventObject.class, name = "status")
}
)
public abstract class Event {
protected String ev;
public Event() {
}
public Event(String ev) {
this.ev=ev;
}
public String getEv() {
return ev;
}
public void setEv(String ev) {
this.ev = ev;
}
}
@JsonTypeName("status")
public class StatusEventObject extends Event{
private String status;
private String message;
public StatusEventObject() {
}
public StatusEventObject(String ev, String status, String message) {
super(ev);
this.status=status;
this.message=message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
return "ev: "+ev+"\nstatus: "+status+"\nmessage: "+message;
}
}
@JsonTypeName("C")
public class ForexQuoteObject extends Event{
private String p; //fx pair
private int x; //fx exchange ID
private double a; //bid
private double b; //ask
private long t; //unixtime MS
public ForexQuoteObject() {
}
public ForexQuoteObject(String ev, String p, int x, double a, double b, long t) {
super(ev);
this.p=p;
this.x=x;
this.a=a;
this.b=b;
this.t=t;
}
public String getP() {
return p;
}
public void setP(String p) {
this.p = p;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public long getT() {
return t;
}
public void setT(long t) {
this.t = t;
}
}
Вот два примера JSON, которые должны быть десериализованы
[{"ev":"status","status":"connected","message":"Connected Successfully"}]
[{"ev":"C","p":"GBP/USD","x":48,"a":1.24973,"b":1.24953,"t":1588361055000}]
А вот как я запрашиваю десериализацию ("message" - это JSON)
Event[] objs;
objs = mapper.readValue(message, StatusEventObject[].class);