Serialisieren Flex Objekte speichern / Wiederherstellen Staat Anwendung
-
03-07-2019 - |
Frage
Ist es möglich, eine Hierarchie von Objekten in Flex, senden die binären Daten an eine URL für die Speicherung / Retrieval auf / von einem Server serialisiert und deserialisiert die Daten der Objekte ursprünglichen Zustand wiederherzustellen?
Ich weiß, es ist möglich, die Objekte in ein XML-Format zu konvertieren (haben versucht, es noch nicht), aber ich bin der Hoffnung, XML zu vermeiden, Parsen und die Objekte manuell neu zu erstellen. Es wäre schön, Funktionalität zu haben, die / deserialisieren Objekte zu einem einfachen binären Format serialisiert werden kann (ich habe etwas ähnliches in der Vergangenheit in Java, wenn auch nicht ganz so leicht, wie ich es mir gewünscht hätte). Die ‚eval‘ -Funktion in Perl ist ähnlich zu dem, was ich suche, sans Code speichern, natürlich.
In Pseudo-Code, hier ist, was ich tun:
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;
}
Lösung
Versuchen Sie, das JSON-basierte serialization
Paket in ascorelib .
[...], aber ich hoffe, dass das Parsen von XML zu vermeiden und den Wiederaufbau der Objekte manuell
AS behandelt XML wie jede andere einheimische Art. Seien Sie versichert. XML ist die bevorzugte Art und Weise mit den Daten zu tun Sie werden abziehen und auf einem Server setzen zurück. Natürlich ist die ascorelib
Sie eine JSON-Klasse gibt -. So dass Sie das auch aussehen möchten
Die 'eval' -Funktion in Perl ist ähnlich zu dem, was ich suche, sans Spar Code, natürlich.
IIRC, eval
ist Teil der ECMAScript-Spezifikation (und Sie werden es in Javascript finden). Aber nicht in AS3.0. Es war dort zu einem gewissen Grad in einigen früheren Version (s?), Aber nicht mehr unterstützt wird.
Andere Tipps
Hier finden Sie aktuelle ByteArray .writeObject () . speichert die übergebenen Objekt in AMF-Format in den Byte-Array. Ich habe diese Funktion nicht zu viel verwendet wird, weiß ich nicht genau, welche Art von Objekten kann es serialisiert, aber auf jeden Fall nicht alle.