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

标签 arrays json coldfusion structure nested-loops

我有一个从外部 API 重新调整的 json:

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

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

"Invalid collection [{parcelNumbers={[15505995603009]},consignmentNumber={5995603009}}]. Must be a valid structure or COM object. "



我到目前为止的代码是:
<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)

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

最佳答案

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>

关于arrays - ColdFusion - 循环遍历数组中的嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190789/

相关文章:

JAVA试图寻找年度最佳职位。不工作

json - maxJsonLength 和 MaxJsonDeserializerMembers 之间有什么区别?

java - Java/ColdFusion 和 Lucee 之间的 identityHashCode 区别

javascript - JS bind 是获取 obj 的状态还是保留对 obj 的引用?

javascript - 关于如何使用数组来存储其他变量的名称有什么想法吗?

javascript - 如何将相同的元素添加到javascript数组n次

javascript - 在 Ajax 成功处理程序中处理 JSON 数据

java - 使用Java JsonPath获取JSON父节点

loops - 如何解析CF结构体

javascript - 如何在 ColdFusion 中将表单值传递到填充查询参数而不刷新