2

我们有以下Json:

{
    "type" : "1",
    "otherStuff" : "2",
    ...
    "items" : [
        {
          "commonItemAttribute" : "value",
          "specificToType1" : "whatever"
          ...
        }
    ]
}

我们需要根据 type 属性将项目多态反序列化为不同的子类。

是否有可能在自定义杰克逊反序列化器中获取类型值?

我们可以使用提供给反序列化方法的 JsonParser 安全地查看 Json 树吗?

我发现了这个关于多态反序列化的博客,但它似乎需要项目本身的类型属性。

谢谢

4

1 回答 1

1

不支持这种 JSON,因为表单的“外部”类型 ID:

{ "childType" : "SomeTypeId", "child" : { .... } }

受支持(带有@JsonTypeInfo.As.EXTERNAL_PROPERTY),它们仅适用于简单类型,不适用于Collections 或Maps。

因此,如果您不能将 JSON 更改为更标准(包括元素的类型 id 是标准方式),您将需要使用自定义序列化器、反序列化器。

于 2013-09-12T05:14:33.520 回答