pet*_*ton 1 arrays coldfusion json loops structure
这是从https://www.googleapis.com/calendar/v3/users/me/calendarList检索到的Google日历数据。
响应使用JSON,因此我使用ColdFusion方法deserializeJson将其转换为CFML结构。
我无法弄清楚遍历此数据的语法。您会看到,在CFML结构中,“ items”是从Google返回的日历数组,每次尝试访问结构中的数组都会产生Java字符串转换错误或语法错误,这可能是因为我无法获得语法正确。
非常感谢您的帮助,非常感谢
一些反复试验会有所帮助-您已经在旅途中。您已经转储的根对象,但是我们在这里将其表示为“ obj”转储的对象:
<cfset obj = deserializejson(googleCal)>
Run Code Online (Sandbox Code Playgroud)
第一层是一个结构,因此您可以按以下方式处理它们:
#obj.etag# // this is a string
Run Code Online (Sandbox Code Playgroud)
项目包含一个数组。因此,您有items [1-n] ...,但是数组中有很多。此代码会将myArrayObj设置为包含3个项目的数组(基于上述转储)。
<cfset myArrayObj = obj.items>
Run Code Online (Sandbox Code Playgroud)
您可以使用isArray进行验证:
#isArray(myArrayObj)#
Run Code Online (Sandbox Code Playgroud)
每个数组成员依次包含一个结构,因此您可以输出:
#myArrayObj[1].accessRole# // this would be a string
Run Code Online (Sandbox Code Playgroud)
... 等等。请注意,数组中的索引项3是空白结构,因此在使用键之前,您需要“检查”该结构是否为空。为此,请调查“ structKeyExists()”。
如果要循环处理每个“项目”(一个非常典型的选择),则只需使用数组执行cfscript循环或cfloop即可,如下所示:
<cfloop array="#myArrayObj#" index="i">
<cfif structKeyExists(myArrayOb[i], "accessRole")>
#myArrayObj[i].accessRole#
</cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。祝好运!