我正在使用外部服务,该服务以以下结构发送响应
如果成功:
{
"executionTime": ""
"result": <subclass of ObjectBase which has type id>
}
如果失败:
{
"executionTime": ""
"result": {
"error": <ErrorResult which is subtype of ObjectBase>
}
}
如果失败,则结果对象中不直接存在类型id,并且Jackson反序列化失败。
我尝试使用defaultImpl,但最终出现此错误
原因:java.lang.IllegalArgumentException:类ErrorResponse不是[简单类型,ObjectBase类]的子类型
public class Response<T> {
private APIException error;
private T result;
public Response(T result, APIException error) {
this.error = error;
this.result = result;
}
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, visible = true, property = ParamKeys.OBJECT_TYPE, defaultImpl = ErrorResponse.class)
@JsonSubTypes({
@JsonSubTypes.Type(name = ObjectTypes.VALUE, value = Value.class),
})
public class ObjectBase implements Serializable {
}
在没有任何黑客手段的情况下,我们如何反序列化呢?
谢谢。