如何在JsonTypeInfo注释中设置参数路径?

时间:2014-08-04 17:47:59

标签: polymorphism jackson parameter-passing

我正在处理与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
}

你知道怎么做吗?从现在开始谢谢你

0 个答案:

没有答案