2016-11-25 68 views
0

我有一個字符串: [[-3.9,-160.1,34.7],[-0.4,16.3,18.0],[236,236,231],'SMTH 123',35]轉換字符串(看起來像數組)多維數組

我怎樣才能將其轉換爲一個多維數組?

+0

如果您已經爲此編寫了代碼,但您無法工作,那麼您來對地方了。只需將您的代碼(或相關部分)添加到問題中,因爲沒有這些,我們就無法提供幫助。請參閱https://stackoverflow.com/help/how-to-ask –

+0

請解釋一下你想要的輸出應該是什麼樣子.... – Stuart

+0

你可以,如果你在PHP編程使用'json_decode'。 –

回答

1

您可以使用JSON.parse()將字符串轉換成一個對象,假設它是有效的JSON開始。您的數據包含由單引號分隔的字符串,這不是有效的JSON。如果你用雙引號替換它們,然後它會工作...

var s = "[[-3.9,-160.1,34.7],[-0.4,16.3,18.0],[236,236,231],'SMTH 123',35]"; 
 
var ar = JSON.parse(s.split("'").join("\"")); 
 
console.log(ar);

+0

當你JSON.parse記得的try/catch來包裝它 - 否則你的腳本將結束與錯誤。 – pilczuk

+0

@NetRat - 此答案適用於此特定問題。如果數據中有任何不會與'JSON.parse()'一起工作的變化,那麼這個答案是不相關的。另外,try/catch應該和eval一樣頻繁使用。你永遠不需要它。 – Archer

+0

什麼時候var s = [「這很複雜」]?在這種情況下,將單引號替換爲雙引號將會打破完美的有效JSON字符串。 –

0

如何做這樣的事情:

function stringToObject(data) { 
    var converted = {}; 
    try { 
     converted = JSON.parse(data); 
    } catch(err) { 
     console.log('Provided data is not valid', err); 
    } 
    return converted; 
} 

console.log(stringToObject('[[-3.9,-160.1,34.7],[-0.4,16.3,18.0],[236,236,231],"SMTH 123",35]')); 
console.log(stringToObject('[[-3.9,-160.1,34.7],[-0.4,16.3,18.0],[236,236,231')); // invalid string 

請注意在我變'成「我的樣本,如果這是一個問題,你可以看看在另一個答案爲這個問題做了轉換。

0

假設jQuery是還行ay:

var arr = $.parseJSON('[[-3.9,-160.1,34.7],[-0.4,16.3,18.0],[236,236,231],'SMTH 123',35]')