<cffunction name="QueryToArray" access="public" returntype="string" output="false"
hint="Converts a query into Javascript code for an array of structures. Will return strings in the form of 'new Array(new Object(), new Object()....);'">
<cfargument name="Data" type="query" required="true" />
<cfscript>
var LOCAL = StructNew();
LOCAL.ColumnList = ListToArray( ARGUMENTS.Data.ColumnList );
LOCAL.ResponseBuffer = CreateObject( "java", "java.lang.StringBuffer" );
LOCAL.ResponseBuffer.Append( "new Array(" );
for (LOCAL.Row = 1 ; LOCAL.Row LTE ARGUMENTS.Data.RecordCount ; LOCAL.Row = (LOCAL.Row + 1)){
LOCAL.ResponseBuffer.Append( "{" );
for (LOCAL.Column = 1 ; LOCAL.Column LTE ArrayLen( LOCAL.ColumnList ) ; LOCAL.Column = (LOCAL.Column + 1)){
LOCAL.Key = LOCAL.ColumnList[ LOCAL.Column ];
LOCAL.Value = ARGUMENTS.Data[ LOCAL.Key ][ LOCAL.Row ];
LOCAL.ResponseBuffer.Append( LCase( LOCAL.Key ) & ":""" & REReplace( LOCAL.Value, "(""|\\)", "\\\1", "ALL" ) & """" );
if (LOCAL.Column LT ListLen( ARGUMENTS.Data.ColumnList )){
LOCAL.ResponseBuffer.Append( "," );
}
}
LOCAL.ResponseBuffer.Append( "}" );
if (LOCAL.Row LT ARGUMENTS.Data.RecordCount){
LOCAL.ResponseBuffer.Append( "," );
}
}
LOCAL.ResponseBuffer.Append( ")" );
return( LOCAL.ResponseBuffer.ToString() );
</cfscript>
</cffunction>