Cfhttp 结果结构的行为就像在 CF8 中为 null



我正在尝试对调用Facebook的结果进行一些清理,但Coldfusion告诉我变量为空:

FILECONTENT null <br>The error occurred on line 66.

以下是导致错误的行:

<cfif isDefined("storeFeedJSON.fileContent")>
    <cfset storeFeedJSON.fileContent = process.CleanBadUnicode("#storeFeedJSON.fileContent#")>
</cfif>

该结构显然不为空,但是因为我将其包装在"isDefined"中,并且当我转储storeFeedJSON时,我可以看到文件内容看起来像

{"data":[]}

空的 JSON 但仍然不为空...

编辑:这是我忘了放在那里的电话:

<cfset fbURL = "https://graph.facebook.com/#qStoreFBPages.pageID#/#fbEdge#?fields=#fbFields#&since=#fbSinceTime#&#qToken.objectValue#">
    <cfhttp result="storeFeedJSON" url="#fbURL#" method="get"></cfhttp>

最终可能会看起来像这样:

<cfhttp result="storeFeedJSON" url="https://graph.facebook.com/1749383765/posts?fields=created_time&since=1389296713&access_token=CAAH6oehQqUUU2IALvt0ZB3mdE6E2LCaldFc1TjIqxALUZBMqZC01O2hQXkOX8ROI9QBHn7WjWrHHneazAP4gWbj0MBsRUlel9TAG52kjBm0bBOUHVEFmEusEUHfhznlqzH1GMgCpCU4z4SmgXU8oFZBPDyAv1ByJu167jgkVd6UROWtDZBNBCP&expires=5184000" method="get"></cfhttp>

请注意,这不会导致Facebook的有效响应,因为我已经更改了令牌和其他一些参数。

我认为你不能重新分配storeFeedJSON结构的属性。storeFeedJSON 是你的 cfhttp 的结果,对吧?如

<cfhttp url="xyz" result="storeFeedJSON">

。我认为这是一种受保护或不可变的数据结构。显然,您可以将其作为函数的参数传递,但将输出放在其他变量中,或者直接传递给 json 反序列化。

<cfset local.cleanFileContent = process.CleanBadUnicode(storeFeedJSON.fileContent)>
<cfdump var="#deserializeJSON(local.cleanFileContent)#">

。当我在做的时候,你可能想使用getasbinary="never"因为Facebook有一天可能会给你二进制数据,或者改变它的标题或其他东西,然后你的代码就会崩溃。如果你必须接收二进制文件,你需要cfhttp.fileContent.toString()或类似的东西。

最新更新