POO - Sauvegarde d'instances

POO - Sauvegarde d'instances - Javascript/Node.js - Programmation

Marsh Posté le 05-10-2020 à 20:18:18    

Bonjour,
 
Je me lance dans l'orienté objet et je ne sais pas trop comment faire pour 'recréer' des instances d'une classe à partir d'un fichier de sauvegarde JSON (sans avoir besoin de redéfinir toutes les propriétés, directement ou via des setters).
 
Je m'explique : j'ai une classe 'Entity' telle que visible en version abrégée ci-dessous. La méthode display() permet d'afficher une instance de la classe à l'écran.

Code :
  1. class Entity {
  2.     constructor(entity_id, entity_name, xPos, yPos, width, height) {
  3.         this.entity_id =  entity_id;
  4.         this.entity_name = entity_name;
  5.         this.position =
  6.         {
  7.             x: xPos,
  8.             y: yPos
  9.         };
  10.  
  11.         // ...
  12.     }
  13.  
  14.     set setTextContent(x) {
  15.         this.text_content = x;
  16.     }
  17.     set setEntityName(title) {
  18.         this.entity_name = title;
  19.     }
  20.     display() {
  21.         let div = document.createElement('div');
  22.         // ...
  23.         maincontainer.appendChild(div);
  24.     }
  25. }


 
Une action de type click va donc créer une nouvelle instance :

Code :
  1. let o1 = new Entity(1, `Test ${1}`, 20, 20, 200, 200);


 
Puis en cliquant pour sauvegarder, une fonction AJAX fait appel à un script PHP pour stocker les données dans un fichier.
Une autre fonction AJAX se charge de récupérer ces données.
 
Maintenant mon problème c'est comment recréer les instances à partir du JSON ?
Car si je fais quelque chose comme :

Code :
  1. let s1 = JSON.stringify(o1);
  2. let o2 = new Entity(JSON.parse(s1));


 
Je perds les données qui ne sont pas définies par le constructeur.
 
Et si je fais :

Code :
  1. let o3 = JSON.parse(s1);


 
o3 n'est pas considéré comme une instance de Entity...


Message édité par b_b_rodriguez le 05-10-2020 à 20:18:39
Reply

Marsh Posté le 05-10-2020 à 20:18:18   

Reply

Marsh Posté le 15-10-2020 à 16:37:15    

Bonjour,
 
Est-ce que la méthode assign() ne ferait pas l'affaire ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 04-11-2020 à 20:08:47    

MaybeEijOrNot a écrit :

Bonjour,
 
Est-ce que la méthode assign() ne ferait pas l'affaire ?


 
 :hello:  
 
C'était bien la bonne solution !
Fort heureusement j'avais fini par trouver même si ça m'a pris du temps...
 
J'avais un peu oublier ce topic  [:darjeeling], mais merci quand même  :jap:

Reply

Marsh Posté le 04-11-2020 à 20:53:41    

De rien, faut dire que personne n'a répondu rapidement, visiblement on était tous trop occupés. :(


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed