Je souhaite écrire un désérialiseur personnalisé pour mon objet, mais pour ce faire, j'ai besoin d'accéder à une autre partie de l'objet désérialisé. Imaginez un objet JSON comme ceci:gson deserializing: Référence propriétaire de l'objet imbriqué
{
"id": 2,
"name": "circle",
"dependencies": {
"donut": "e8ed7bbd8715de2f5a85930912fcf238"
},
"someReference": {
"type": "Model",
"refersTo": "donut"
}
}
Je sais comment écrire un adaptateur/désérialiseur. Je sais aussi comment transformer le "e8ed7bbd8715de2f5a85930912fcf238" en un objet Java via ancien. Qu'est-ce que je ne veux pas et que je voudrais savoir, c'est comment transformer mon "donut" en "e8ed7bbd8715de2f5a85930912fcf238" ou l'objet Java ultime "pendant" la création. Cette information se situe dans le champ du parent, car "someReference" correspond à un autre objet Java. Ainsi, la classe de niveau supérieur est un Owner
avec les champs:
public class Owner {
public int id;
public String name;
public List<String, Resource> dependencies;
public MyReference someReference;
}
id
, name
, dependencies
tous les travaux jusqu'à présent. Donc: Comment puis-je référencer l'objet parent dans un processus de désérialisation? Est-ce seulement possible? Quelle serait une solution à ce que j'essaie de faire?
Nice! C'est dommage car je ne voulais pas fouiller dans le OwnerDeserializer pour y arriver. J'aurais plutôt aimé un MyReferenceDeserializer qui obtient un propriétaire comme référence (ou simplement un JsonTree du "contexte" actuel dans lequel il se trouve). Quelque chose comme 'context.getParentNode(). Get (" dépendances "). Get (" donut ")' Je suppose que je n'ai pas d'autre choix alors. – Danyel