2009-03-02 6 views
1

Flex에서 객체 계층 구조를 직렬화하고 이진 데이터를 서버에서 저장/검색 할 URL로 보내고 데이터를 deserialize하여 객체의 데이터를 복원 할 수 있습니까? 원래 상태?Flex 객체를 직렬화하여 응용 프로그램 상태 저장/복원

개체를 XML 형식으로 변환 할 수 있음을 알고 있지만 아직 XML을 구문 분석하지 않고 개체를 수동으로 다시 작성하지 않기를 바랍니다. 단순한 바이너리 형식으로 객체를 직렬화/비 직렬화 할 수있는 기능을 갖는 것이 좋을 것입니다. (나는 자바에서 과거에 비슷한 것을했지만, 내가 좋아할만큼 쉽게 그렇게하지는 못했습니다.) Perl의 'eval'함수는 내가 찾고있는 것과 유사합니다. 물론 코드를 저장하지 않습니다.

는 의사 코드에서, 여기에 내가하고 싶은 내용은 다음과 같습니다

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; 
} 

답변

1

ascorelib의 JSON 기반 serialization 패키지를보십시오.

[...]하지만 XML을 구문 분석하고 다른 모든 기본 유형과 같은 XML을 처리하는대로 수동으로

을 개체를 다시 작성 피하기 위해 바라고 있어요. 안심하십시오. XML을 사용하면 서버에서 데이터를 가져 와서 되돌릴 수 있습니다. 물론 ascorelib은 JSON 클래스를 제공합니다. 따라서 JSON 클래스도 살펴볼 수 있습니다.

Perl의 'eval'기능은 내가 찾고있는 것과 유사합니다. 물론 코드를 절약 할 수 있습니다.

IIRC, eval은 ECMAScript 사양의 일부이며 자바 스크립트에서도 찾을 수 있습니다. 하지만 AS3.0에는 없습니다. 일부 이전 버전 (s?)에는 어느 정도까지 있었지만 더 이상 지원되지 않습니다.

+0

응답 해 주셔서 감사합니다. 내가 이해하고 있는지 확인하기 위해 : (예제에서) HBox를 XML로 변환하고이를 서버에 저장하면 XML을 검색하고 HBox (및 모든 자식)를 구문 분석하거나 수동 객체를 수행하지 않고 객체로 복원 할 수 있습니다 창조? – bedwyr

+1

아니요, HBox를 XML로 변환 할 수 없습니다. 이를 위해 함수를 구현해야합니다. XML 처리는 AS3에서 고통 스럽습니다. – dirkgently

+0

아, 알겠습니다. 당신의 도움을 주셔서 감사합니다. – bedwyr

4

ByteArray.writeObject()을 살펴보십시오. 전달 된 객체를 AMF 형식으로 바이트 배열에 저장합니다. 이 함수를 너무 많이 사용하지는 않았지만 어떤 종류의 객체를 직렬화 할 수 있는지 정확히 알 수는 없지만 확실히 모든 것을 직렬화 할 수는 없습니다.