2 votes

Copie de variables d'un POJO à un autre

J'ai un POJO 'A' qui contient plus de 30 variables. J'ai une autre POJO 'B' et la plupart des variables sont les mêmes que dans 'A'.

Par exemple, A a une variable var1 en tant que liste de LocalDate et B a un attribut avec le même nom var1 mais en tant que liste de Long (valeur longue de la date). Maintenant, à partir du service REST, j'ai obtenu la réponse en 'B' et mes anciens clients utilisent toujours 'A'. Je veux convertir la réponse de B en A. Comme toutes les autres valeurs sont les mêmes, à l'exception de la variable var1, quel serait le moyen le plus efficace de copier tous les autres attributs de var2 à var1 ? Existe-t-il une bibliothèque qui propose une telle méthode ?

2voto

raviiii1 Points 703

Le meilleur moyen est d'écrire une méthode de mappage qui fait correspondre l'objet de A à l'objet de B. C'est la façon la plus sûre et la plus recommandée de procéder.

Si vous êtes d'accord pour salir votre code vous pouvez sérialiser l'objA et ensuite le désérialiser en objB. Assurez-vous que tous les champs non-nullables sont disponibles dans les deux objets et soyez prêt à attraper les exceptions de parsing. En fait, les noms des champs doivent également être les mêmes dans les deux classes, à moins qu'ils ne soient affectés à des noms différents (alias) (par exemple, avec des annotations de type Jackson). Si les noms des champs ne sont pas exactement les mêmes, ils seront abandonnés.

B objB = Json.deserialize(JSON.serialize(objA), new TypeReference<B>(){});

0voto

Gaurav Sahu Points 23

Vous pouvez utiliser une bibliothèque de mappage comme dozer pour mapper deux classes avec les mêmes champs. Vous pouvez exclure les champs qui sont différents dans les deux POJO et les mapper vous-même.

Consultez ce lien pour plus de détails http://dozer.sourceforge.net/

0voto

Arup Points 96

Vous pourriez avoir terminé en utilisant Gson

Gson gson = new Gson();
Type type = new TypeToken<YourPOJOClass>(){}.getType();
String data = gson.toJson(workingPOJO);
coppiedPOJO = gson.fromJson(data, type);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X