Coldfusion Query разбитая структура столбцов
На столбец запроса Coldfusion можно ссылаться как на двумерный массив из того, что я знаю из своего прошлого опыта. Иногда, хотя я получаю эту проблему.
- создать запрос из электронной таблицы
- поместить имена столбцов в массив
- получить только первый элемент при попытке получить доступ к строке
- должен использовать обходной путь
//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);
У меня остался только первый элемент в первом столбце. И я получаю конечно:
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");