我正在尝试使用JSON.parse
将字符串解析为数组数组,例如
var a = "[['1909-23', 'egg']]"
JSON.parse(a)
它给了我SytaxError。不知道有没有简单的方法来解决它。感谢。
答案 0 :(得分:4)
字符串
"[['1909-23', 'egg']]"
不是有效的JSON字符串。因此,无法在其上调用JSON.parse()
。
JSON format requires double引用字符串。
然后解决方案是使用双引号:
var a = '[["1909-23", "egg"]]';
console.log(JSON.parse(a));
答案 1 :(得分:1)
在使用此功能之前,请阅读Why is using the JavaScript eval function a bad idea?。 这可能会打开您的JavaScript代码注入攻击。更好的解决方案是actually turn your string into correct JSON and parse is using JSON.parse
所有人都说,你可以使用eval
“解析”(实际上你已经执行字符串作为javascript,因此注入问题)。
var a = "[['1909-23', 'egg']]"
var b = eval(a);
console.log(b);
不要使用eval!
eval()是一个危险的函数,它执行它传递的代码 具有来电者的特权。如果使用字符串运行eval() 可能会受到恶意方的影响,您最终可能会运行 具有您的权限的用户计算机上的恶意代码 网页/扩展程序。更重要的是,第三方代码可以看到 调用eval()的范围,可能导致可能的攻击 以类似函数不易受影响的方式。
eval()也比替代品慢,因为它必须调用 JS解释器,而许多其他构造都经过优化 现代JS引擎。
此外,现代的JavaScript解释器将javascript转换为 机器代码。这意味着任何变量命名的概念都会得到 抹杀。因此,任何使用eval都会迫使浏览器做很长时间 昂贵的变量名称查找,以找出变量的位置 存在于机器代码中并设置它的值。另外,新事物 可以通过eval()引入该变量,例如更改 该变量的类型,强制浏览器重新评估所有 生成的机器代码来补偿。但是,(谢天谢地) 存在一个非常好的eval替代方法:只需使用window.Function。 作为如何使用邪恶的eval()将代码转换为使用的示例 功能(),