Jackson反序列化多态类型:处理由于拼错类而导致的错误



下面是一个示例类:

@JsonTypeInfo(use = Id.NAME, property = "type")
@JsonSubTypes({
@Type(value = Cat.class),
@Type(value = Dog.class)
})
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class Pet {
/..../
}

我有两个问题:

  1. 如果JSON中有一个拼写错误的类型(Dogg),如下所示:{"type": "Dogg"}

我会得到默认的"无法读取JSON">异常。

我如何处理这个自定义的东西,例如:"提供错误的类型。">

  1. 如果JSON中没有提供类型字段,我再次得到无法读取JSON异常。是否有一种方法来标记这个字段,例如@NotEmpty,这样用户就会得到一个适当的异常?

我认为最好的选择是在将json传递给jackson之前对其进行预处理。

相关内容