这里是一道后续问题:在ColdFusion中追加JSON数组时如何处理null值的基础上。
那个问题昨天已经有答案,而且非常完美(感谢 Kevin B. 和 Leigh!)。然而,今天早上我的应用程序却对我提出了一个难题。根据请求的数据不同,有时返回整个JSON作为如下的数组:Sometimes。
我不知道为什么该应用会这样。如果我知道这是可能发生的事情,我会在之前的问题中添加这些信息,抱歉。
我的尝试寻找解决方案首先让我来到这里:使用Coldfusion处理JSON数据。作为一个集合遍历JSON数组似乎是可以工作的,但仅当数组值均非空时才有效。我认为如果我将该代码用于所有JSON字段,则与之前的问题一样,它也会起作用:
这并不是这种情况。我一直收到以下错误信息:
我将继续寻找解决方案,但任何帮助都将不胜感激!
-- 编辑 --
我看到了这个帖子:ColdFusion JSON object vs array of objects。我注意到问题中的 JSON 是一个数组
那个问题昨天已经有答案,而且非常完美(感谢 Kevin B. 和 Leigh!)。然而,今天早上我的应用程序却对我提出了一个难题。根据请求的数据不同,有时返回整个JSON作为如下的数组:Sometimes。
[
{
"loginHosts": [
"server1.example.com"
],
"sudoHosts": [
"server1.example.com"
],
"CPG": [
"my_group"
],
"mail": "myuser@example.com",
"loginShell": "/bin/bash"
}
]
我不知道为什么该应用会这样。如果我知道这是可能发生的事情,我会在之前的问题中添加这些信息,抱歉。
我的尝试寻找解决方案首先让我来到这里:使用Coldfusion处理JSON数据。作为一个集合遍历JSON数组似乎是可以工作的,但仅当数组值均非空时才有效。我认为如果我将该代码用于所有JSON字段,则与之前的问题一样,它也会起作用:
<cfif NOT structKeyExists(myStruct, 'sudoHosts') OR NOT isArray(myStruct.sudoHosts)>
<cfset myStruct.sudoHosts = []>
</cfif>
这并不是这种情况。我一直收到以下错误信息:
通过查看调试输出,Lucee 排除了这个问题:Error: Can't cast Complex Object Type Array to String
string Use Built-In-Function "serialize(Array):String" to create a String from Array
。我更深入地挖掘了一下,并发现了这篇文章:Railo tip: store complex data by using serialize(data)。遗憾的是,空值又来找麻烦了。另外,我的理解是serialize()
类似于evaluate()
,而且不建议使用。我将继续寻找解决方案,但任何帮助都将不胜感激!
-- 编辑 --
我看到了这个帖子:ColdFusion JSON object vs array of objects。我注意到问题中的 JSON 是一个数组
[]
,并将答案应用到了我的代码中,但仍然遇到了空值问题。我想我不知道如何检查嵌套的空值。 :(