java - Jackson 反序列化多态类型:处理由于类拼写错误导致的错误
问题描述
这是一个示例类:
@JsonTypeInfo(use = Id.NAME, property = "type")
@JsonSubTypes({
@Type(value = Cat.class),
@Type(value = Dog.class)
})
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class Pet {
/..../
}
我有两个问题:
- 如果我们有一个拼写错误的 JSON (Dogg),如下所示: {"type": "Dogg" }
我将得到默认的“无法读取 JSON”异常。
我该如何处理这个自定义的东西,例如:“提供了错误的类型”。
- 如果 JSON 中未提供 type 字段,我将再次收到“无法读取 JSON”异常。有没有办法标记这个字段,例如@NotEmpty,这样用户就会得到一个适当的异常?
解决方案
我认为您拥有的最佳选择是在将 json 传递给杰克逊之前对其进行预处理。