Wednesday, March 3, 2010

My Data-Only Object Notation Converter

Here's my home-rolled method for serializing a data-only object to PON (Perl Object Notation) or JSON. "Data-Only" means that the object only contains scalars, hashes, and arrays -- no classes.


// to output JSON, pass in a pair of ":" instead of "=>".
private function encodePON( obj:Object, pair:String="=>" ):String
{
if ( obj is String ) return "'" + obj + "'";
if ( obj is Number ) return obj.toString();

var out:String = "";
var ary:Array;

if ( obj is Array )
{
out += "[";
ary = new Array();
for each (var item:Object in obj as Array)
ary.push( encodePON( item ) );
out += ary.join( ", " );
out += "]";
}
else if ( obj is Object )
{
out += "{";
ary = new Array();
for (var key:String in obj)
ary.push( "'" + key + "' " + pair + " " + encodePON( obj[key] ) );
out += ary.join( ", " );
out += "}";
}

return out;
}

No comments:

Post a Comment