Coldfusion Query разбитая структура столбцов

На столбец запроса Coldfusion можно ссылаться как на двумерный массив из того, что я знаю из своего прошлого опыта. Иногда, хотя я получаю эту проблему.

  1. создать запрос из электронной таблицы
  2. поместить имена столбцов в массив
  3. получить только первый элемент при попытке получить доступ к строке
  4. должен использовать обходной путь

//imports is a query object after this function
var imports = convertSpreadsheetWOHeaders(spreadsheet, 1);
//this is used to give name values in the json struct, not to access the query columns
var jsonHeaders = ListToArray("number,constructiontype,description,site_address,parcel,permit_date,note_Applicant,note_Contractor,valuation,note_Bld_Fees,note_Other_Fees");
//this gives me ["col_1","col_2","col_3",,,etc]. used to access query columns
var columnHeaders = imports.getColumnNames();
writeDump(imports[columnHeaders[1]]);
writeDump(imports);

вывод writeDump

У меня остался только первый элемент в первом столбце. И я получаю конечно:

Message: You have attempted to dereference a scalar variable of type class java.lang.String as a structure with members.

При попытке сделать это:

structInsert(jsonStruct,jsonHeaders[j],imports[columnHeaders[j]][i]);

Тем не менее, это работает:

 writeDump(ListToArray(ArrayToList(imports[columnHeaders[1]],'|'),'|',true));

преобразован в список, затем массив

Сначала я делаю дамп импорта ["col_1"] и получаю только первый элемент. Затем я делаю дамп ListToArray(ArrayToList(import ["col_1"])), как вы видите на изображении выше, и он дает мне весь столбец.

Почему я не могу правильно получить доступ к колонке?

1 ответ

Решение

Настоящая проблема:

Первоначально я пытался получить доступ к списку jsonHeaders как массив, не делая ListToArray() в теме. После этого моя функция сработала.

НО. Эта следующая часть полезна.

При попытке получить доступ к объекту запроса, делая queryObject["columnName"] считается ярлыком queryObject["columnName"][1] так что Coldfusion просто даст вам первый элемент.

Но когда я сказал ListToArray(ArrayToList()) Coldfusion видит, что ArrayToList ДОЛЖЕН принимать массив, чтобы исключение было сделано, а столбец возвращался как массив.

Чтобы вернуть столбец в качестве массива для работы, вы можете сделать пару вещей

ListToArray(ArrayToList(query["column"]));
ListToArray(valueList(query.column));
valueArray(query, "column");
Другие вопросы по тегам