杰克逊:有没有办法将@JsonTypeInfo和@JsonCreator用作工厂?

时间:2019-04-11 07:49:29

标签: jackson

我有一个抽象类使用

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "Type", visible = true)

@JsonSubTypes({
        @JsonSubTypes.Type(value = ONE.class, name = "ONE"),
        @JsonSubTypes.Type(value = TWO.class, name = "TWO")})
abstract class ZERO {....}

创建正确的类。
这很好用,但是,我现在有了一个新类(我们称之为三类),它是另一类的占位符。 所以说我得到这样的东西:

class THREE {
String ID;
}

我也有该类到某些具体类的映射,所以这个ID实际上是在说,应该从映射中获取该类

Map<String, ZERO> map

我想做这样的事情

class THREE_FACTORY{
    @JsonCreator
    public static ZERO create(@JsonProperty("ID") id){
        return map.get(id);
    }
}

但它不能很好地与子类型一起使用。

您有办法实现这一目标吗?通过使用我所说的话或其他我没有想到的方法?

这里最重要的是,零类列表根本不应该包含三个类,而应该替换它们,我不希望有包装类...

0 个答案:

没有答案