Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1696 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Aide pour une custom deserialization JAVA

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour une custom deserialization JAVA

n°2334490
R-a-p-h2
Posté le 04-06-2019 à 11:24:02  profilanswer
 

Bonjour,
 
Petit soucie de logique, et je souhaiterais avoir votre aide ou une autre direction à suivre.
 
Je pose déjà les bases du code pour plus de compréhension :  
 
un fichier JSON

Code :
  1. [
  2.   {
  3.     "name": "BFA",
  4.     "entityType": "secteur",
  5.     "rootEntity": ""
  6.   },
  7.     {
  8.     "name": "IT",
  9.     "entityType": "service",
  10.     "rootEntity": ""
  11.   },
  12.   {
  13.     "name": "EX",
  14.     "entityType": "offre",
  15.     "rootEntity": "BFA"
  16.   }
  17. ]

 
 
une Entité :

Code :
  1. @JsonDeserialize(using = EntityDeserialization.class)
  2. public class Entity {
  3.     private String name;
  4.     private String entityType;
  5.     private Entity rootEntity; ...


 
Une classe pour la custom deserialization :  
 

Code :
  1. public Entity deserialize(JsonParser jp, DeserializationContext ctxt)
  2.             throws IOException {
  3.         JsonNode node = jp.getCodec().readTree(jp);
  4.         String name =  node.get("name" ).asText();
  5.         String entitype = node.get("entityType" ).asText();
  6.         String rootEntity = node.get("rootEntity" ).asText();
  7.         Entity entity = new Entity();
  8.         entity = entity.searchEntity(entities, rootEntity);
  9.         return new Entity(name, entitype,entity);
  10.     }


 
le MAIN :

Code :
  1. public static void main(String[] args) throws FileNotFoundException {
  2.         com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
  3.         mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
  4.         TypeReference<List<User>> typeReferenceUser = new TypeReference<>() {};
  5.         TypeReference<List<Entity>> typeReferenceEntity = new TypeReference<>() {};
  6.         FileInputStream inputStreamUser = new FileInputStream("C:\\Users\\oraph\\Desktop\\user.json" );
  7.         FileInputStream inputStreamEntity = new FileInputStream("C:\\Users\\oraph\\Desktop\\entity.json" );
  8.         try {
  9.            List<User> users = mapper.readValue(inputStreamUser,typeReferenceUser);
  10.            List<Entity> entities = mapper.readValue(inputStreamEntity,typeReferenceEntity);
  11. ...


 
Ici il faut se focus sur la classe Deserialization et le main.
 
Dans le main, je prends mon fichier jSON et avec l'aide de la lib jackson je le deserialize pour créer une list d'entité ( List<Entity> entities).
Mais comme dans mon JSON, j'ai un objet (Entity) embbeded . rootEntity est lui meme un object Entity. Je fais une custom deserialization.  
 
Est la problème,  j'ai une fonction searchEntity qui prend en paramètre un nom (string) et  la liste d'entité qui est justement entrain de se créer et qui se trouve dans le MAIN.  (j'ai l'impression que c'est une sorte de récursivité)
En gros la fonction searchEntity parcours la liste (avec stream.filter) et me return un object (Entity) ou null.
 
Ai je été assez clair? Avez vous une idée de comment résoudre ce problème?
 
Merci
Raphael
 
 

mood
Publicité
Posté le 04-06-2019 à 11:24:02  profilanswer
 

n°2334578
R-a-p-h2
Posté le 04-06-2019 à 16:38:57  profilanswer
 

Bon j'ai réussi en faisant une double custom deserialization du fichier. (j'ai crée une deuxième classe EntityDeserializatio)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Aide pour une custom deserialization JAVA

 

Sujets relatifs
JFrame JPanel javaBesoin d'aide pour trouver mon erreur
Aide vba word choix dans une liste[AIDE] Highcharts - graphique en fonction d'une var ID et Time
Aide SDL audiobesoin d'aide Shell/bash svp
java.lang.reflect.InvocationTargetException dans un projetImpossible de faire un slider besoin d'aide
Java Spring Boot - oauthParalléliser les tris à l'aide de fork
Plus de sujets relatifs à : Aide pour une custom deserialization JAVA


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR