我正在处理与Jackson的抽象和接口映射,我遇到了这个问题。我有这个输入:
data: {
semaphore: {
type: "MAIN",
alertLevel: "NORMAL",
...
},
statusHolder: {
...
{
}
所以,在下面的这个类中,我想一方面将SemaphoreResponse类的“semaphore”属性转换为两个不同的具体类(它们都是从AbstractSemaphore扩展而来),取决于来自的“type”参数输入。并且要从属性信号量转换到具体类我没有问题,因为type属性在对象“信号量”内,所以我把这个注释放在AbstractSemaphore类中,一切都很好
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@Type(value = MainSemaphore.class, name = "MAIN"),
@Type(value = ExecutionSemaphore.class, name = "EXECUTION") })
所以,这是我的问题。我想用statusHolder属性做类似的事情。我有两个从IStatusHolder(接口)扩展的具体类,我想根据“类型”转换到相应的类,与之前使用的参数相同。问题是这个参数在“信号量”对象里面,在“statusHolder”之外,所以在某种程度上我必须通过注释告诉杰克逊在“信号量”对象中寻找这个属性,而不是从“statusHolder”。
public class SemaphoreResponse {
AbstractSemaphore semaphore;
AbstractStatusHolder statusHolder;
public SemaphoreResponse() {
super();
}
// Getters and setters
}
你知道怎么做吗?从现在开始谢谢你