Coldfusion:如何访问嵌套的结构数组

Coldfusion: how to access nested array of structures

我正在尝试访问 tax_lines.item 和 tax_lines.price,但没有成功。 这是我运行:

<cfif structKeyExists( jsonData, 'orders' ) AND isArray(jsonData.orders)>
    <cfloop from="1" to="#arrayLen(jsonData.orders)#" index="i">
        <cfset line_items = jsonData.orders[i].line_items>
        <cfif not arrayIsEmpty(#line_items#)>
            <cfloop array="#line_items#" index="i"> 
            ......
            ........
            <cfset item_tax_lines = line_items[i].tax_lines>                    
                <cfif not arrayIsEmpty(#item_tax_lines#)>
                ....
                </cfif>
            </cfloop>
        </cfif>
    </cfloop>
</cfif>

line_items[i].tax_lines

这会导致错误,因为您正在使用数组循环。所以索引变量 i 包含数组的当前元素 - 而不是位置编号。要访问 tax_lines 键,请改用 i.tax_lines

<cfif not arrayIsEmpty(#line_items#)> <cfloop array="#line_items#" index="i">

与错误无关,但不需要检查 arrayIsEmpty。如果数组为空,则循环将不执行任何操作。因此,您可以将循环代码简化为:

<cfloop array="#jsonData.orders#" index="order">
    <cfloop array="#order.line_items#" index="line">
        do something with #line.tax_lines# here ....
     </cfloop>
</cfloop>

我喜欢 Ageax 的解决方案。我会在 <cfscript>

中完成
<cfscript>
for (order in jsonData.orders) {
   for (line in  order.line_items) {
       // fancy stuff with line.tax_lines#
   }
 }
</cfscript>