2016-06-10 15 views
2

我有一個要求將所有ColdFusion異常詳細信息存儲在數據庫表中。所以我打算序列化cfcatch結構並將其存儲在db中,但我遇到了一個問題。序列化之前和之後的結構並不相同。因此,對於測試的目的,這裏的代碼我想在我的地方小片段,SerializeJSON和DeserializeJSON無法正常工作cfcatch塊

<cftry> 
<cfset a = 5/0> 
<cfcatch type="any"> 
    <cfdump var="#cfcatch#"> 
    <cfset a = SerializeJSON(cfcatch)> 
    <cfdump var = "#DeserializeJSON(a)#"> 
</cfcatch> 
</cftry> 

下面是從第一個轉儲(原cfcatch)的屏幕截圖。 enter image description here 這裏是第二個轉儲的截圖(即序列化,然後反序列化)

enter image description here

+0

嘗試'' - 請注意,重複會執行深層複製。 –

+0

感謝@JohnWhish,它的工作,爲什麼我們需要在這裏重複功能? – user3714162

+0

cfcatch變量實際上並不是一個ColdFusion結構,重複將它強制爲一個ColdFusion結構,然後它可以序列化。 –

回答

4

進入作爲對OP的問題中留言,但添加在這裏以及在情況下,它是有用的人。

嘗試:

<cfset a = SerializeJSON(duplicate(cfcatch))> 

雖然當你傾倒,在cfcatch數據看起來像一個ColdFusion結構它是不是真的,在duplicate強制它ColdFusion的結構,它可以再序列化。請注意,重複會進行深層複製。

有關cfcatch是什麼的更多信息,請參閱https://stackoverflow.com/a/30630495/291653