ColdFusion在具有空/未定义字段的数组上循环

时间:2019-01-07 04:45:51

标签: coldfusion coldfusion-10

我正在从我们的一家供应商的API下载数据。数据是一个数组,但是某些字段为空,以undefined的形式出现。我能够通过循环获取大部分信息,但是当我添加字段“ notes”时,它会失败并显示以下错误:

”元素注释在作为表达式一部分引用的CFML结构中未定义。包含或处理的文件的特定顺序为:

  

C:\ websites \ Fire \ Reports \ xml_parse \ Crewsense_payroll_loop.cfm,行:   21“

当我查看转储时,我看到该字段显示为“未定义”。我的想法已经用完了。任何帮助将不胜感激。我已经包含了整个代码和指向显示数组的转储的链接。

<cfhttp url="https://api.crewsense.com/v1/payroll? access_token=as;lkdfj;alskdfj;laksdfj&token_type=bearer&start=2019-01-05%2019:00:00&end=2019-01-06%2007:59:00" method="GET" resolveurl="YES" result="result">
</cfhttp>

<cfoutput>

<cfset ApiData = deserializeJSON(result.filecontent)>

<cfset API_ArrayLength = arraylen(ApiData)>

    <cfloop index="i" from="1" to=#API_ArrayLength#>    

    #i# #ApiData[i]["name"]#
        #ApiData[i]["employee_id"]#
        #ApiData[i]["start"]#
        #ApiData[i]["end"]#
        #ApiData[i]["total_hours"]#
        #ApiData[i]["work_type"]#
        #ApiData[i]["work_code"]#
        #ApiData[i]["user_id"]#
        #ApiData[i]["notes"]#  <---Fails here when added--->

        <cfset i = i+1>
    <br>
    </cfloop>   

    <cfdump var="#ApiData#">

</cfoutput>

Dump

1 个答案:

答案 0 :(得分:3)

在处理具有可选元素的数据结构时,您需要先检查它们的存在,然后再尝试访问它们。否则,您将得到该错误。我使用structKeyExists()函数为您的代码添加了一个带有SELECT YEAR(StrDate) StrYear, MONTH(StrDate) StrMonth, DAY(StrDate) StrDay FROM ( SELECT TRY_CAST(StrDate AS DATE) StrDate FROM Dates )T 条件的代码段。

if