2012-11-27 135 views
1

怎樣一個字符串轉換成數組字符串與評估陣列()失敗

<cfscript> 
    stResult = { strData = "[1,2,3,4,5,6]" 
       , arInstant = [1,2,3,4,5,6] 
       }; 

    //stResult.arData = evaluate(stResult.strData); // this does not work 
    //stResult.arData = evaluate("#stResult.strData#"); // nor does this 

    writedump(stResult); 
</cfscript> 

我試圖得到的東西看起來像arInstant。

有沒有更好的辦法比剝離[],轉換爲列表,然後轉換爲數組?

+0

你還沒說你正在使用的CFML引擎和版本,這可能是非常重要的。 fww您的代碼在Railo 4.0.2.000中按預期工作 –

+0

使用具有多個分隔符的'listToArray',即'[,]'肯定會這樣做。假設有一個很好的理由將它存儲爲一個字符串,而不是最初的數組.. – Leigh

+0

我使用Adobe CF 9.02 –

回答

2

評估()通常應避免(參考:1,2,3)。如何努力:

stResult.arData = ListToArray(stResult.strData, "[],"); 

這是把整個字符串作爲一個列表,以及[],

可能的分隔符它應該給你在這6個元素的數組。

當然,你的stResult.arInstant似乎已經有你需要的東西......你想要做什麼?

+0

用'[]'格式化的字符串來自外部進程。 arInstant是目標 –

0

對於這個特定的問題,「

難道還有比條帶化的[],轉換成一個列表,然後轉換成一個陣列更好的辦法?」

實際上,一旦您將方括號刪除,它就是一個列表,因此它少了一步。

4

您的數據是一個JSON字符串,所以使用deserializeJson()將其轉換爲數組。

用法:

Result.Data = deserializeJson(Result.Input); 
+0

+1。這是使用json輸入的正確函數。 – Leigh