解析Java JSON时动态@JsonSubTypes

解析Java JSON时动态@JsonSubTypes,java,json,Java,Json,我有一个涉及动态@JsonSubTypes贡献者的系统,我正试图找出如何重构我的代码(下面的示例),使其不使用@JsonSubTypes注释,而是动态或在运行时提供这些值。有人知道这是否可能吗 @JsonSubTypes({ @JsonSubTypes.Type(value = Dog.class, name = "dog"), @JsonSubTypes.Type(value = Cat.class, name = "cat") }

我有一个涉及动态@JsonSubTypes贡献者的系统,我正试图找出如何重构我的代码(下面的示例),使其不使用@JsonSubTypes注释,而是动态或在运行时提供这些值。有人知道这是否可能吗

   @JsonSubTypes({
    @JsonSubTypes.Type(value = Dog.class, name = "dog"),
    @JsonSubTypes.Type(value = Cat.class, name = "cat")
})

对此进行了研究,可以采取几种不同的方法,最有意义的方法是在具有不同子类实现的基类上声明此注释

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
这将在序列化的JSON中添加一个“@class”元字段,然后在反序列化时使用该字段来确定正在使用的子类。唯一的缺点是在编写手动JSON时必须包含字段