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

jsc*_*car 5 arrays coldfusion json structure nested-loops

我有一个从外部 API 返回的 json:

{ "data" : { "consignmentDetail" : [ { "consignmentNumber" : "5995600864",
            "parcelNumbers" : [ "15505995600864" ]
          } ],
      "consolidated" : false,
      "shipmentId" : "60764454"
    },
  "error" : null
}
Run Code Online (Sandbox Code Playgroud)

我可以shipmentId通过反序列化 JSON 并抓取 来获取该值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>
Run Code Online (Sandbox Code Playgroud)

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

我也许应该补充一点,我对 ColdFusion 非常陌生,并且仍然处于陡峭的学习曲线上:)(运行 Coldfusion 10)

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

Ray*_*den 5

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>
Run Code Online (Sandbox Code Playgroud)