Serialization SerializeJSON和DeserializeJSON对于cfcatch块工作不正常
我需要将所有ColdFusion异常详细信息存储在数据库表中。所以我计划序列化cfcatch结构并将其存储在数据库中,但我有一个问题,序列化前后的结构不一样。出于测试目的,这里是我在本地计算机上尝试的一小段代码Serialization SerializeJSON和DeserializeJSON对于cfcatch块工作不正常,serialization,coldfusion,coldfusion-9,coldfusion-10,Serialization,Coldfusion,Coldfusion 9,Coldfusion 10,我需要将所有ColdFusion异常详细信息存储在数据库表中。所以我计划序列化cfcatch结构并将其存储在数据库中,但我有一个问题,序列化前后的结构不一样。出于测试目的,这里是我在本地计算机上尝试的一小段代码 <cftry> <cfset a = 5/0> <cfcatch type="any"> <cfdump var="#cfcatch#"> <cfset a = SerializeJSON(cfcatch)&g
<cftry>
<cfset a = 5/0>
<cfcatch type="any">
<cfdump var="#cfcatch#">
<cfset a = SerializeJSON(cfcatch)>
<cfdump var = "#DeserializeJSON(a)#">
</cfcatch>
</cftry>
这是第一次转储(原始cfcatch)的屏幕截图。
这是第二次转储的屏幕截图(即序列化然后反序列化)
作为对OP问题的评论输入,但在此处添加,以防对其他人有用
尝试:
虽然当您转储它时,cfcatch
数据看起来像一个ColdFusion结构,但实际上并非如此,duplicate
将它强制为一个ColdFusion结构,然后它可以序列化该结构。请注意,复制会产生深度复制
有关什么是cfcatch的更多信息,请参阅。尝试
-请注意,duplicate会进行深度复制。感谢@JohnWhish,它正在工作,为什么我们需要在此处使用duplicate函数?cfcatch变量实际上不是ColdFusion结构,重复项将其强制为ColdFusion结构,然后可以序列化。@user3714162检查cfcatch
type的答案。
<cfset a = SerializeJSON(duplicate(cfcatch))>