Сериализация объектов в AS3, тип String слишком мал, чтобы удерживать BLOB-объекты - PullRequest
2 голосов
/ 12 декабря 2011

Я использую:

    import flash.utils.ByteArray;
    import mx.utils.Base64Encoder;
    import mx.utils.Base64Decoder;
    .
    .
    .
    public static function serializeToString(value:Object):String{
        if(value==null){
            throw new Error("null isn't a legal serialization candidate");
        }
        var bytes:ByteArray = new ByteArray();
        bytes.writeObject(value);
        bytes.position = 0;
        var be:Base64Encoder = new Base64Encoder();
        be.encode(bytes.readUTFBytes(bytes.length));
        return be.drain();
    }

    public static function deSerializeFromString(value:String):Object{
        var dec:Base64Decoder=new Base64Decoder();
        dec.decode(value);
        var result:ByteArray=dec.drain();
        result.position=0;
        return result.readObject();
    }    

Но я продолжаю получать сообщение об ошибке «Ошибка 2030: обнаружен конец файла».

Это (вероятно), потому что сериализуемый мной класс слишком велик для типа объекта "String" в AS3.

Существует ли безграничный объект для хранения массива символов (или, что еще лучше, бинарный), или мне придется создавать свой собственный класс? (например, с массивом строк)

1 Ответ

2 голосов
/ 07 апреля 2012

Другой эффективный кроссплатформенный способ сериализации объектов - использование JSON. Вот библиотека для as3: https://github.com/mherkender/actionjson

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...