我从外部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)
感谢您阅读并感谢您提供的任何帮助。
答案 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>