【问题标题】:Convert struct to query Coldfusion将结构转换为查询 Coldfusion
【发布时间】:2011-01-21 23:48:02
【问题描述】:

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

我正在使用来自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;

我只是想知道是否有一种冷融合方法可以让我将 returnStruct 转换为查询..

非常感谢

【问题讨论】:

  • 你为什么不修改方法本身来返回查询(虽然我更喜欢数组)?
  • 为了简洁起见,如果您要返回查询,您可能希望调用返回变量“returnQuery”而不是“returnStruct”。当他们回头看时,这肯定会让人失望。

标签: coldfusion struct


【解决方案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'] ]);

【讨论】:

  • 您好,感谢您的回复...当我尝试代码时 arrayAppend(returnArray, [results[':title'],results[':annotation'],results[':creator'],results [':date'] ]; 我收到错误消息“无效令牌;”。谢谢
  • 如果您不在 CF9 或 Railo 上,则需要在 /* ACF8 及更早版本 */ 中执行代码
  • 该代码有同样的问题...不得不从函数行的末尾删除一个额外的“]”。会看看这个..谢谢
【解决方案2】:

CFLIB.org 是你的朋友

QueryToArrayOfStructures

【讨论】:

    【解决方案3】:

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

    用法:QueryNew(columnList, columnTypeList, arrayOfStructs)

    【讨论】:

    • 感谢您的回复。我现在已经从冷融合继续前进,但无论如何谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多