2016-11-25 70 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]')