Jackson 数据绑定 - 如何在不指定目标 class 的情况下反序列化对象?

Jackson databind - how to deserialize an object without specifying the target class?

我正在从 snakeyaml 迁移,snakeyaml 的一个特性是它会自动在输出 YAML 中写入对象类型,这样反序列化就会变得透明和容易。我似乎无法在 Jackson Databind 中找到相同的功能。

如果我只指定 Object.class,我会得到一个 LinkedHashMap,这是意料之中的。此外,为了使它起作用,我必须在 JSON 中看到 class 类型,但我还没有找到一种本地方法来做到这一点。

这是必需的吗?

如果我对问题的理解正确,也许您正在寻找 JsonTypeInfo

来自文档

  // Include Java class name ("com.myempl.ImplClass") as JSON property "class"
  @JsonTypeInfo(use=Id.CLASS, include=As.PROPERTY, property="class")

我最终在实际对象数据之前添加了 class 名称,然后在实际将数据反序列化回对象之前将其拆分出来,这是 snakeyaml 自动执行的操作。不过,我希望在 Jackson 中自动执行此操作。