AS3 lang ref about SharedObject data:
Each attribute can be an object of any ActionScript or JavaScript type — Array, Number, Boolean, ByteArray, XML, and so on. For example, the following lines assign values to various aspects of a shared object:
Try to use ByteArray. How write object in SO:
var list:ArrayList = new ArrayList(["test"]);
var buffer:ByteArray = new ByteArray();
buffer.writeObject(list);
buffer.position = 0;
var mySo:SharedObject = SharedObject.getLocal("application");
mySo.data.list = buffer;
mySo.flush();
And read object:
var mySo:SharedObject = SharedObject.getLocal("application");
var buffer:ByteArray = mySo.data.list;
var result:ArrayList = ArrayList( buffer.readObject() );
For custom class, use registerClassAlias, see Vesper comment.