我们有以下Json:
{
"type" : "1",
"otherStuff" : "2",
...
"items" : [
{
"commonItemAttribute" : "value",
"specificToType1" : "whatever"
...
}
]
}
我们需要根据type属性将项目多态地反序列化为不同的子类。
在自定义Jackson deserialiser中是否可以获得类型值?
我们可以使用给deserialize方法提供的JsonParser安全地查找Json树吗?
我发现this blog有关多态反序列化的信息,但它似乎需要项目本身的类型属性。
由于
答案 0 :(得分:1)
不支持这种JSON,因为虽然形式为“外部”类型ID:
{“childType”:“SomeTypeId”, “孩子”:{....} }
受支持(使用@JsonTypeInfo.As.EXTERNAL_PROPERTY
),它们仅适用于简单类型,而不适用于Collection
或Map
。
因此,如果您无法将JSON更改为更标准(包括元素的类型ID是标准方式),则需要使用自定义序列化器,反序列化器。