我有一个涉及动态 @JsonSubTypes 贡献者的系统,我试图弄清楚如何重构我的代码(下面的示例)以不使用 @JsonSubTypes 注释,而是动态或在运行时提供这些值。有谁知道这是否可能?
@JsonSubTypes({
@JsonSubTypes.Type(value = Dog.class, name = "dog"),
@JsonSubTypes.Type(value = Cat.class, name = "cat")
})
Run Code Online (Sandbox Code Playgroud)
研究了这一点,可以采取几种不同的方法,最有意义的方法是在具有不同子类实现的基类上声明此注释。
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
Run Code Online (Sandbox Code Playgroud)
这会将“@class”元字段添加到序列化的 JSON 中,然后在反序列化时使用该元字段来确定正在使用哪个子类。唯一的缺点是在编写手动 JSON 时必须包含该字段。
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |