我在 JSON 反序列化方面遇到了这个特定问题。让我们有这个 JSON 结构:
{
"header":{
"objects":[
{"field":"value1"},
{"field":"value2"}
]
}
}
JSON 结构无法更改,因为它来自第 3 方系统。
现在让我们有这个简单的 POJO:
@JsonDeserialize(using=PojoDeserializer.class)
public class Pojo {
private string field;
//...getter, setter
}
提到的 PojoDeserializer 采用 {"field": "value"} json 字符串并将其反序列化为 Pojo 实例。所以我可以像这样简单地进行反序列化
Pojo instance = new ObjectMapper().readValue("{\"field\": \"value\"}", Pojo.class);
这是我的问题。让我们有另一个反序列化器 PojosCollectionDeserializer,它采用上述结构并将其反序列化为 Pojo 实例的集合。我想以与上一个示例类似的方式使用它:
Collection<Pojo> pojos = new ObjectMapper().readValue("{...}", Collection.class);
但这不起作用,因为没有定义应该使用 PojosCollectionDeserializer 创建 Collection。有没有办法实现它?