我知道这个问题可能有很多答案,但到目前为止我一直无法解决。我想循环遍历包含在某些字段数组中的结构以及在这些数组中包含其他结构的结构。
我附上了结构的截图。
目前问题似乎很复杂,我还没有找到解决方案。
图片位于以下位置:
尝试以下方法:
<script type="text/ecmascript">
但最后收到错误,如:
无法将复杂对象类型转换为简单值。
答案 0 :(得分:2)
不太确定你想要的输出是什么,但假设你只是试图循环并显示结构,那么你可以做这样的事情。希望它能让你知道如何处理嵌套结构,你可以从那里开始:)
<cfscript>
// example data
qEvents = {
"attendees" = [{
"displayName" = "Tom",
"id" = 1,
"self" = true
},{
"displayName" = "Richard",
"id" = 2,
"organizer" = true
}],
"creator" = {
"displayName" = "Harry"
}
};
// process the data
function showStructure(it) {
if (IsSimpleValue(it)) {
return it; // just a simple string
} else {
var result = "";
var isStruct = isStruct(it);
for (var v in it) {
if (isStruct) {
result &= v & " = " & showStructure(it[v]) & chr(10);
} else {
// assuming an array here but could be more complex
result &= showStructure(v) & chr(10);
}
}
return result;
}
}
</cfscript>
<cfoutput>
<cfloop collection="#qEvents#" item="key">
<cfset keyValue = qEvents[key]>
<b>#key#</b>:<br>
#replace(showStructure(keyValue), chr(10), "<br>", "all")#<hr>
</cfloop>
</cfoutput>
以下是一个在优秀的trycf网站上运行的示例: http://trycf.com/gist/d71e418802cefe93ae51/acf?theme=monokai
答案 1 :(得分:0)
在使用它之前,您必须检查每个项目。 isStruct
和isArray
是您的朋友。找到结构后,您将循环其键,对于数组,您将按索引和数组长度循环。