Object from String

var str:String='{x: 10, y:10, width:100, heigth:100, name:"myClip", type:"clip"}';

var obj:Object=toObject(str);

trace(obj.x + obj.width, obj.name, obj.type);

function toObject(str:String):Object {
	str=str.replace(/{|}/g,"");
	// to an array of name value pairs [0] = name, [1] = value etc...
	var pairs:Array=str.split(/:|,s+/);
	var obj:Object = new Object();
	for (var i:int = 0; i<pairs.length; i+=2) {
		obj[pairs[i]]=numOrString(pairs[i+1]);
	}
	return obj;
}
function numOrString(val:*):* {
	if (isNaN(Number(val))) {
		if (val.charAt(0) == '"' && val.charAt(val.length - 1) == '"'){
			val = val.substr(1, val.length - 2);
		}
	} else {
		val=Number(val);
	}
	return val;
}

A very limited way to parse an object from a string… Tomorrow I’ll post a better version of this that’s a good deal more complex and doesn’t really use regular expressions… This works nicely if you don’t have arrays as Object properties…

2 comments

Leave a Reply

Your email address will not be published. Required fields are marked *