Never mind this, I was being extremely stupid :) I was confusing cfloop
with for
loops, thinking it would only take one row of the query :) I changed it to this:
l.response.body.result = ArrayNew(1);
for(l.i=1;l.i lte l.events.recordcount;l.i = (l.i + 1)){
ArrayAppend(l.response.body["result"], StructNew());
l.eventIndex = ArrayLen(l.response.body["result"]);
l.response.body["result"][l.eventIndex]["id"] = l.events.id[l.i];
l.response.body["result"][l.eventIndex]["start"] = DateDiff("s","1/1/1970",l.events.startdate[l.i]) * 1000;
l.response.body["result"][l.eventIndex]["end"] = DateDiff("s","1/1/1970",l.events.enddate[l.i]) * 1000;
l.response.body["result"][l.eventIndex]["title"] = l.events.title[l.i];
l.response.body["result"][l.eventIndex]["class"] = "class";
l.response.body["result"][l.eventIndex]["url"] = l.url;
}