如何根据父类中的属性对Jackson进行多态JSON反序列化?

时间:2013-09-10 08:20:25

标签: java json jackson

我们有以下Json:

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

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

在自定义Jackson deserialiser中是否可以获得类型值?

我们可以使用给deserialize方法提供的JsonParser安全地查找Json树吗?

我发现this blog有关多态反序列化的信息,但它似乎需要项目本身的类型属性。

由于

1 个答案:

答案 0 :(得分:1)

不支持这种JSON,因为虽然形式为“外部”类型ID:

{“childType”:“SomeTypeId”,      “孩子”:{....}    }

受支持(使用@JsonTypeInfo.As.EXTERNAL_PROPERTY),它们仅适用于简单类型,而不适用于CollectionMap

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

相关问题