【发布时间】:2020-09-14 19:06:19
【问题描述】:
我在处理内部数组(变体)时遇到问题。获取类 java.lang.String 类型的对象不能用作数组
<cfset jsonData = deserializeJSON(httpResp.fileContent) />
<cfset products = jsonData.products>
<cfoutput>
<cfloop array="#products#" index="x">
#x.id# - #x.handle# <br>
<cfset variants = "variants">
<cfloop array="variants" index= "i">
#i.barcode#
</cfloop>
</cfloop>
</cfoutput>
【问题讨论】:
-
你需要使用
<cfset variants = x.variants>或者像<cfloop array="#x.variants#" index= "i">一样直接在循环中使用。 -
谢谢,它有效,但现在我收到“元素条码在 I 中未定义。”
-
你得到“
Object of type class java.lang.String cannot be used as an array”的原因是因为你在每个循环的products结构内部设置<cfset variants = "variants">并覆盖variants元素。删除cfset并将循环数组更改为#x.variants#,它应该可以满足您的需求。 -
然后对于
#i.barcode#,如果没有定义,你可以给它#i.barcode?:""#默认为空字符串。
标签: arrays coldfusion cfloop coldfusion-2018