Serializza gli oggetti Flex per salvare / ripristinare lo stato dell'applicazione

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

  •  03-07-2019
  •  | 
  •  

Domanda

È possibile serializzare una gerarchia di oggetti in Flex, inviare i dati binari a un URL per l'archiviazione / recupero su / da un server e deserializzare i dati per ripristinare lo stato originale degli oggetti?

So che è possibile convertire gli oggetti in un formato XML (non l'ho ancora provato), ma spero di evitare di analizzare XML e ricostruire gli oggetti manualmente. Sarebbe bello avere funzionalità che possano serializzare / deserializzare gli oggetti in un semplice formato binario (ho fatto qualcosa di simile in passato in Java, anche se non così facilmente come mi sarebbe piaciuto). La funzione 'eval' in Perl è simile a quella che sto cercando, senza salvare il codice, ovviamente.

In pseudo-codice, ecco cosa mi piacerebbe fare:

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;
}
È stato utile?

Soluzione

Prova il pacchetto serializzazione basato su JSON in ascorelib .

  

[...] ma spero di evitare di analizzare XML e ricostruire gli oggetti manualmente

AS gestisce XML come qualsiasi altro tipo nativo. Stia tranquillo. XML è il modo preferito di gestire i dati che verranno estratti e rimessi su un server. Ovviamente, ascorelib ti dà una classe JSON - quindi potresti voler guardare anche quello.

  

La funzione 'eval' in Perl è simile a quello che sto cercando, senza salvare il codice, ovviamente.

IIRC, eval fa parte della specifica ECMAScript (e la troverai in Javascript). Ma non in AS3.0. Era presente in una certa misura in alcune versioni precedenti (s?) Ma non è più supportato.

Altri suggerimenti

Dai un'occhiata a ByteArray .WriteObject () . che salva l'oggetto passato in formato AMF nell'array di byte. Non ho usato troppo questa funzione, non so esattamente che tipo di oggetti può serializzare, ma sicuramente non tutti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top