Sérialiser des objets Flex pour enregistrer / restaurer l'état de l'application

StackOverflow https://stackoverflow.com/questions/603890

  •  03-07-2019
  •  | 
  •  

Question

Est-il possible de sérialiser une hiérarchie d'objets dans Flex, d'envoyer les données binaires vers une URL pour le stockage / la récupération sur / depuis un serveur et de désérialiser les données pour restaurer l'état d'origine des objets?

Je sais qu'il est possible de convertir les objets au format XML (je ne l'ai pas encore essayé), mais j'espère éviter l'analyse XML et la reconstruction manuelle des objets. Il serait intéressant de disposer de fonctionnalités permettant de sérialiser / désérialiser des objets dans un format binaire simple (j’avais fait quelque chose de similaire dans le passé en Java, mais pas aussi facilement que je l’aurais souhaité). La fonction 'eval' dans Perl est similaire à ce que je recherche, sans enregistrer le code, bien sûr.

Dans le pseudo-code, voici ce que je voudrais faire:

private var contentToSave:HBox = new HBox();

private function saveState(event:Event):void {
    var toSave:HBox = this.contentToSave;
    var data:? = /* serialize 'toSave' ActionScript classes to binary data*/;
    sendDataToServer(data, filename);
}
private function restoreState(filename):void {
    var data:? = getDataFromServer(filename);
    var savedData:HBox = /* deserialize binary 'data' to ActionScript classes */;
    this.contentToSave = savedData;
}
Était-ce utile?

La solution

Essayez le package de sérialisation basé sur JSON dans ascorelib .

  

[...] mais j'espère éviter l'analyse XML et la reconstruction manuelle des objets

AS gère XML comme tout autre type natif. Repos assuré. XML est le moyen privilégié de traiter les données que vous allez extraire et remettre sur un serveur. Bien sûr, ascorelib vous donne une classe JSON - vous pouvez donc également y jeter un coup d'oeil.

  

La fonction "eval" dans Perl est similaire à ce que je recherche, sans enregistrer le code, bien sûr.

IIRC, eval fait partie de la spécification ECMAScript (et vous le trouverez en Javascript). Mais pas dans AS3.0. Il existait dans une certaine mesure dans certaines versions précédentes, mais n'est plus pris en charge.

Autres conseils

Jetez un coup d'oeil à ByteArray .writeObject () . qui enregistre l'objet transmis au format AMF dans le tableau d'octets. Je n'ai pas trop utilisé cette fonction, je ne sais pas exactement quel type d'objets elle peut sérialiser, mais certainement pas tous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top