首页 > 解决方案 > 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 中未提供 type 字段,我将再次收到“无法读取 JSON”异常。有没有办法标记这个字段,例如@NotEmpty,这样用户就会得到一个适当的异常?

标签: javajsonjacksonpolymorphism

解决方案


我认为您拥有的最佳选择是在将 json 传递给杰克逊之前对其进行预处理。


推荐阅读