在AS3中序列化对象,字符串类型太小而无法容纳blob

时间:2011-12-12 15:48:33

标签: string actionscript-3 serialization

我正在使用:

    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:遇到文件结尾。”

这是(可能)因为我正在序列化的类对于AS3中的“String”对象类型来说太大了。

是否有一个无限的对象存储一个字符数组(或更好的二进制),或者我将不得不自己创建一个类? (就像一个有字符串数组的那个)

1 个答案:

答案 0 :(得分:2)

另一种有效的跨平台序列化对象方法是使用JSON。 这是as3的库: https://github.com/mherkender/actionjson