In my project I have some JsonDeserializer
s to deserialize abstract types in collections.
Now I have a type which has a Collection
property. How can I instruct Jackson to deserialize the nested collection for me instead of doing it myself?
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?? */);
}
}
}