在我的项目中,我有一些
JsonDeserializer
用于反序列化集合中的抽象类型。现在我有一个类型,它有一个Collection
属性。我该如何指示Jackson为我反序列化嵌套的集合,而不是自己去做呢?interface Person {
String getName();
void setName(String name);
}
class LonelyPerson implements Person { ... }
class SocialPerson implements Person {
private List<Person> friends;
...
}
public class SocialPersonDeserializer extends JsonDeserializer<Person> {
public Person deserialize(final JsonParser jp, final DeserializationContext ctx) throws IOException {
ObjectCodec codec = jp.getCodec();
JsonNode jsonNode = codec.readTree(jp);
String name = jsonNode.get("name").asText();
SocialPerson sp = new SocialPerson();
p.setName(name);
JsonNode friends = jsonNode.get("name").asText();
for (JsonNode friendNode : friends) {
sp.getFriends().add(/* How to desialize another person?? */);
}
}
}