Il est bien sûr impossible pour Jackson de déduire qu'un pays entièrement peuplé est en train de se développer. Person
représentant le conjoint du numéro 2
. Vous devrez probablement enregistrer un désérialiseur personnalisé qui vérifie si l'entrée est un entier et, si c'est le cas, recherche le conjoint là où il est stocké. Je n'ai pas fait ce genre de choses pour les classes qui contiennent des références à elles-mêmes (par exemple, votre Person
contient un Person
), je ne peux donc que vous donner des indications approximatives.
Je crois que cela ne fonctionne qu'avec la version Jackson 1.9
ou plus tard. Fondamentalement, vous pouvez enregistrer un module avec le mappeur d'objets qui indique à Jackson d'utiliser un désérialiseur personnalisé.
SimpleModule module = new SimpleModule("PeopleModule", new Version(1, 1, 0, null);
module.addDeserializer(Person.class, new JacksonPersonDeserializer());
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
En alternance sur le Person
elle-même, vous pouvez faire quelque chose comme :
class Person {
@JsonDeserialize(using=JacksonPersonDeserializer.class)
Person spouse;
}
Cela fonctionne avant 1.9
mais pollue votre objet. Dans tous les cas, vous devrez écrire un désérialiseur personnalisé.