Coldfusion 查询断列结构

Coldfusion Query broken column structure

根据我过去的经验,coldfusion 查询的列可以像二维数组一样被引用。虽然有时我会遇到这个问题。

  1. 从电子表格创建查询
  2. 将列名放入数组中
  3. 尝试访问行时仅获取第一个元素
  4. 必须使用解决方法

</p>

<pre><code>//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));

我首先转储了 imports["col_1"],我只得到了 第一个元素。 然后我转储 ListToArray(ArrayToList(imports["col_1"])) 就像你在上图中看到的那样,它给了我 整列。

为什么我一开始就无法正确访问该列?

真正的问题:

我最初试图将 jsonHeaders 列表作为数组访问,而不对其执行 ListToArray()。之后我的功能就起作用了。

但是。下一部分很有帮助。

尝试访问查询对象时,执行 queryObject["columnName"] 被视为 queryObject["columnName"][1] 的快捷方式,因此 coldfusion 只会为您提供第一个元素。

但是当我说 ListToArray(ArrayToList()) 时,coldfusion 发现 ArrayToList 必须接受一个数组,因此会出现异常并将该列作为数组返回。

要将列取回数组以供使用,您可以做几件事

ListToArray(ArrayToList(query["column"]));
ListToArray(valueList(query.column));
valueArray(query, "column");