ColdFusion - 循环遍历数组中的嵌套结构

时间:2015-01-28 11:12:54

标签: arrays json coldfusion structure nested-loops

我从外部API重新调整了json:

{ "data" : { "consignmentDetail" : [ { "consignmentNumber" : "5995600864",
            "parcelNumbers" : [ "15505995600864" ]
          } ],
      "consolidated" : false,
      "shipmentId" : "60764454"
    },
  "error" : null
}

我可以通过反序列化JSON并抓取shipmentId来获取data.ShipmentId值。我真的需要得到consignmentNumber的值,但当我尝试将数组作为集合循环时,我收到错误:

  

"收集无效   [{parcelNumbers = {[15505995603009]},consignmentNumber = {5995603009}}]。   必须是有效的结构或COM对象。 "

我到目前为止的代码是:

<cfset consignmentDetailArray = [] >
<cfset consignmentDetailArray = shipmentData.data.consignmentDetail>
<cfset mystruct ={}>

<cfloop collection=#consignmentDetailArray# item="i">
   <cfset myStruct = consignmentDetailArray[i]>
   <cfloop collection="#myStruct#" item="key">
      <cfoutput>#key#: #myStruct[key]#<br /></cfoutput>
   </cfloop>
</cfloop>

任何想法导致错误的原因是什么?是因为数组中的结构是consignmentDetail的值吗? 如果是这样,关于如何正确循环该结构的任何指针?

我应该补充一点,我对ColdFusion很新,并且还处于陡峭的学习曲线上:) (运行Coldfusion 10)

感谢您阅读并感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:4)

consignmentDetalArray是一个数组,而不是一个结构,并且您正在使用cfloop collection =。您希望从1循环到len或使用cfloop / array。

以下是解决问题的一种方法:

<cfloop array="#consignmentDetailArray#" index="myStruct">
  <cfloop collection="#myStruct#" item="key">
    <cfoutput>#key#: #myStruct[key]#<br /></cfoutput>
  </cfloop>
</cfloop>