将“['a','b','c']”转换为['a','b','c']:Javascript

时间:2012-11-26 07:05:38

标签: javascript

这是做这些事情的最好方法吗?

注意:我的数组包含复数值,表示逗号分隔或侧字符串数组中的对象值& double 引号和元素中引用的数组字符串位于单个引号中。

EX。 str = "['sam', 'admin', '1062', 'Sam', 'True', '$$global_permissions#1062:manage_replenishment,purchase_order,reprint_invoice#1008', 'sameer@opnce.com', '9920580', 'en', '358', '{\"Sales-tax-details\":\"brand,category,supplierNo\",\"invoice-logs\":\"invoiceNo,eventDateTime,event\"}']"

我在这里玩JSON.parse

JSON.parse(str);
Uncaught SyntaxError: Unexpected token ' // this error i got on console

然后我试了,

JSON.parse(str.replace(/'/g, '"'))
Uncaught SyntaxError: Unexpected token S  // this error i got on console

我想在这里探讨的另一件事是, 如果str包含以下元素,

str = "['sam', 'admin', '1062', 'Sam', 'True', '$$global_permissions#1062:manage_replenishment,purchase_order,reprint_invoice#1008', 'sameer@opnce.com', '9920580', 'en', '358', '{}']"

我试过这个str

JSON.parse(str.replace(/'/g, '"'))

这里的工作正常,

问候。

5 个答案:

答案 0 :(得分:6)

也许,

JSON.parse('["a", "b", "c"]');

编辑:对于问题中的 EX。 str,以下内容应该有效:

JSON.parse(str.replace(/'{/g, "{").replace(/}'/g, "}").replace(/'/g, "\"").replace(/\\\"/g, "'"))

答案 1 :(得分:3)

这个怎么样:

JSON.parse('["a","b","c"]');

答案 2 :(得分:1)

JSON.parse应该有效。如果您无法使用JSON,这也有效:

var str = '["a","b","c"]'
   ,str2arr = str.replace(/"|\[|\]/g,'').split(',');
//=> str2arr = ['a','b','c']

答案 3 :(得分:1)

最正确的方法是:

try{
    var res = JSON.parse(your_string);
} catch(e){
    //console.log(e);
}

这样,如果字符串不正确,它将不会产生错误,并且在catch块中你可以为这种情况做正确的事情

答案 4 :(得分:-2)

没有jquery(这不是问题)试试这个:

var string = '["a","b","c"]';
var myArray = [];
try {
    myArray = eval(string);
}
catch (r) {
}

console.log(myArray)