这是一个后续问题:使用 ColdFusion 附加到 JSON 数组,考虑 Null 值?
这个问题昨天得到了回答,而且效果很好(谢谢 Kevin B. 和 Leigh!)。然而,今天早上我从中提取 JSON 数据的应用程序给了我一个曲线球。 有时,根据我请求的数据,它会将整个 JSON 作为数组返回,如下所示:
[
{
"loginHosts": [
"server1.example.com"
],
"sudoHosts": [
"server1.example.com"
],
"CPG": [
"my_group"
],
"mail": "myuser@example.com",
"loginShell": "/bin/bash"
}
]
我不知道为什么该应用程序会这样做。如果我知道这是一种可能性,我会将该信息添加到我之前的问题中,我很抱歉。
我试图找到解决方案的尝试首先把我带到了这里:Using JSON Data with Coldfusion。将 JSON 数组作为集合循环似乎可行,但前提是所有数组值都不是 Null。我认为如果我将它用于所有 JSON 字段,则使用此代码(如上一个问题)会起作用:
<cfif NOT structKeyExists(myStruct, 'sudoHosts') OR NOT isArray(myStruct.sudoHosts)>
<cfset myStruct.sudoHosts = []>
</cfif>
此情况并非如此。我不断得到:
错误:无法将复杂对象类型数组转换为字符串
查看调试输出,Lucee 确实抛出了这个:string Use Built-In-Function "serialize(Array):String" to create a String from Array
. 我做了更多的挖掘,发现了这篇文章:Railo 提示:使用 serialize(data) 存储复杂数据。可悲的是,空值再次出现。另外,我的理解serialize()
与 类似evaluate()
,不推荐。
我将继续寻找解决方案,但一如既往地非常感谢任何帮助!
- 编辑 -
我遇到了这个线程:ColdFusion JSON object vs array of objects。我注意到问题中的 JSON 是一个 ARRAY []
,我将答案应用于我的代码,但仍然遇到 Null 问题。我想我不知道如何检查嵌套的 Null 值。:(