2014-09-20 94 views
1

inbuild SerializeJSON擺脫陣列數據JSON如下:JSON響應問題

<cfset retData = '{"username":"#session.username#","items":#serializeJson(items)#}'> 

這樣,在我得到的迴應是:

{"username":"user1","items":["{\"s\": \"1\",\"f\": \"El\",\"m\": \"How are you\"}"]} 

我試圖消除backslashes使用jsStringFormat,但沒有幫助..

嘗試過這樣的:

<cfset retData = '{"username":"#session.username#","items":#serializeJson(jsStringFormat(items))#}'> 

但沒有任何幫助,你們可以在正確的方向

+0

爲什麼單引號呢? – 2014-09-20 20:23:36

+0

單引號沒有出現在被淘汰的json中,即使json是有效的,我在jsonlint.com上測試過 – voyeger 2014-09-20 20:25:32

回答

2

不要把它設置爲一個字符串點。首先將其設爲結構,然後致電serializeJSON()。根據這些數據,似乎items已經是一個結構。

<cfset refData = { 'username' = '#session.username#', 'items' = #items# } /> 
<cfset refData = serializeJSON(refData) /> 
+0

我試過了,但現在我收到一個錯誤:'消息\t無法將複雜對象類型數組轉換爲字符串 詳細信息\t使用內置函數「serialize(Array):String」從數組創建字符串「。這裏的項目是一個'Array' – voyeger 2014-09-21 07:10:07

+0

做一個'cfdump'的項目並將問題的屏幕截圖發佈。從輸出看,「items」看起來像是一個包含一個結構的元素的數組。 – 2014-09-21 13:32:55

+0

此外,顯示您使用的是拋出此錯誤的代碼。我使用''來創建變量'items'並使用代碼I提供的按預期工作。 – 2014-09-21 13:45:33

0

使用'deserializeJson'。 它可能會幫助你。

<cfset items = '["{\"s\": \"1\",\"f\": \"El\",\"m\": \"How are you\"}"]'> 
<cfset items = #deserializeJson(items)#> 
<cfset retData = '{"username":"user1","items":#serializeJson(items)#}'> 
<cfoutput > 
    #retData# 
</cfoutput>