我正在设置ColdFusion 2018(带有Update 5),并且遇到了问题-似乎CF Admin中的“启用Null支持”选项没有任何作用。
我有一些API结果(来自第三方api)可以返回空值-例如; json
{
"FirstName": "Fred",
"LastName": null,
"Email": "test@test.com"
}
当我deserializeJson( theResult )
和cfdump
结构时,它的姓氏值为“ undefined”。在ColdFusion 9(我将其移植到CF2018)中,在上面给出的示例中,执行cfdump时,LastName的值显示为“ null”。我的问题是在CF2018中,当我尝试访问此变量时会抛出错误
变量姓氏未定义
如果您不勾选CF管理员中的启用Null支持复选框,似乎没有什么不同。我尝试选择它,取消选择它,甚至在每次更新后重新启动CF。
这是一个错误吗?我正在使用带有更新5(版本2018.0.05.315699)的CF2018。有什么想法吗?
答案 0 :(得分:0)
“在ColdFusion 2018之前,来自数据库/ JSON的空值变为空字符串。因此,我们无法区分NULL与EMPTY值方案。 为了支持基于null的实现,新版本在ColdFusion 2018中引入了null作为语言更改的一部分。
https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-c-d/DeserializeJSON.html 从ColdFusion 10开始,JSON空值变得不确定。
在ColdFusion 2018中启用Null支持是不同的,它与JSON数据处理中的null值无关。
只有isNull和isDefined函数的行为会随上述设置而变化。
对于具有空值的变量,isNull和isDefined函数返回true。 以前,isNull函数的输出与isDefined函数的输出相反,但是现在它检查值是否为null的变量。”