将struct转换为查询Coldfusion

时间:2010-02-28 11:01:28

标签: coldfusion struct

想知道是否有人可以提供帮助

我正在使用RIAForge中的一些代码,这些代码与Last.fm api集成...

其中一个方法作为结构输出,但我想修改代码,使其作为数组输出,我不确定如何做到这一点。

目前代码是这样的

<cfscript>
 var args = StructNew();
 var returnStruct = StructNew();
 var results = "";
 var i = 0;


 args['playlistURL'] = arguments.playlistURL;

 results = super.callMethod('playlist.fetch', args).playlist;


 returnStruct['title'] = results[':title'];
 returnStruct['annotation'] = results[':annotation'];
 returnStruct['creator'] = results[':creator'];
 returnStruct['date'] = results[':date'];


 if(StructKeyExists(results, ':trackList') AND StructKeyExists(results[':trackList'], ':track')){
 results = super.ensureArray(results[':trackList'][':track']);

 returnStruct['tracks'] = QueryNew('album,creator,duration,identifier,image,info,title');

 for(i=1; i LTE ArrayLen(results); i=i+1){
 QueryAddRow(returnStruct.tracks);
 QuerySetCell(returnStruct.tracks, 'album', results[i].album);
 QuerySetCell(returnStruct.tracks, 'creator', results[i].creator);
 QuerySetCell(returnStruct.tracks, 'duration', results[i].duration);
 QuerySetCell(returnStruct.tracks, 'identifier', results[i].identifier);
 QuerySetCell(returnStruct.tracks, 'image', results[i].image);
 QuerySetCell(returnStruct.tracks, 'info', results[i].info);
 QuerySetCell(returnStruct.tracks, 'title', results[i].title);
 }
}
 return returnStruct;

我只是想知道是否有一个coldfusion方法允许我将returnStruct转换为查询..

非常感谢

3 个答案:

答案 0 :(得分:4)

在CF 10和Railo 4中,如果要将一组结构转换为查询,则可以使用QueryNew() function

用法:QueryNew(columnList, columnTypeList, arrayOfStructs)

答案 1 :(得分:2)

CFLIB.org是你的朋友

QueryToArrayOfStructures

答案 2 :(得分:1)

您需要通过循环结果并放入数组数组来手动完成。如果您希望将结构转换为查询,则http://www.cflib.org处的函数已准备就绪。

var returnArray = []; /* or arrayNew(1) if not on Railo or CF9 */

/* ACF9 or Railo Style */
arrayAppend(returnArray, [results[':title'],results[':annotation'],results[':creator'],results[':date'] ]);

/* ACF8 and earlier */
arrayAppend( returnArray, arrayNew(1) ]);
arrayAppend( returnArray[ arrayLen(returnArray) ], results[':title'] ]);
arrayAppend( returnArray[ arrayLen(returnArray) ], results[':annotation'] ]);