2010-02-28 2 views
1

Vous vous demandez si quelqu'un peut aiderstruct Convertir en Coldfusion interroger

Je suis en utilisant un code de RIAForge qui intègre le api Last.fm ...

L'une des sorties de méthodes comme struct, mais je souhaite modifier le code de sorte qu'il génère comme un tableau, ne suis pas sûr de savoir comment faire ..

Actuellement, le code est comme celui-ci

<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; 

me demande s'il existe une méthode de coldfusion qui me permet de convertir le returnStruct dans une requête ..

Un grand merci

+0

Pourquoi ne pas modifier la méthode elle-même pour revenir requête (si je préfère les tableaux)? – Sergii

+0

Pour des raisons de propreté, si vous renvoyez une requête, vous pouvez appeler la variable de retour "returnQuery" au lieu de "returnStruct". C'est inévitable de jeter quelqu'un quand il regarde en arrière. – Nicklepedde

+0

Merci pour la suggestion – namtax

Répondre

1

Vous aurez besoin de le faire manuellement en boucle sur vos résultats et placer dans un tableau de tableaux. Si, vous voulez convertir votre structure en une requête, il y a des fonctions au http://www.cflib.org qui sont prêtes à l'emploi.

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'] ]); 
+0

Salut merci pour la réponse ... quand j'essaie le code arrayAppend (returnArray, [results [': title'], résultats [': annotation'], résultats [': creator'], résultats [': date ']]; Je reçois le message d'erreur "Invalid token;" Merci – namtax

+0

Si vous n'êtes pas sur CF9 ou Railo, vous devrez faire le code dans/* ACF8 et plus tôt */ –

+0

Avait le même problème avec ce code ... a dû enlever un ']' supplémentaire de la fin de la ligne de fonction.J'aurai un coup d'oeil dans ce..merci – namtax

3

vous pouvez utiliser le QueryNew() function si vous avez dans CF 10 et Railo 4, un tableau de struct que vous souhaitez convertir à une requête.

Utilisation: QueryNew(columnList, columnTypeList, arrayOfStructs)

+0

Merci pour votre réponse.Je suis passé de coldfusion pour l'instant, mais merci malgré tout. – namtax