为什么要写这个,因为我去看某个流量大的博主,写的太简易,容易误人子弟,所以写个详细版。
let arr = '["qq","nn","555","456"]'
let b= JSON.parse(arr)
这是我的答案
然后知名博主推荐 的是
let arr = '["qq","nn","555","456"]'
let b= eval(arr)
这个解决办法肯定是能达到想到的效果,
但对于数据而言,如果是数据字符串对象化,数组化,请用JSON.parse,如果字符串里有计算数据处理,请用eval
var x = 10;
var y = 20;
var a = eval("x * y") + "<br>";
var b = eval("2 + 2") + "<br>";
var c = eval("x + 17") + "<br>";
// 答案
200
4
27
不信请看下面测试数据
var A = "{ a: 1 , b : 'hello' }";
var B = "{ 'a': 1 , 'b' : 'hello' }";
var C = "{'a':1,'b':'hello'}";
var D = '{"a":1,"b":"hello"}';
var E = '{ "a" : 1 , "b" : "hello" }';
var F = '{ "a" : 1 ,\n "b" : "hello" }';
var G = '{ "a" : 1 , "b" : window.location.href="https://www.baidu.com" }';
JSON.parse执行:
例:JSON.parse(A);
A、B、C、G都不可转,D、E、F都可以。
eval执行:
例:eval("("+A+")");
A到G都可以转,特别到G时,页面还跳转到百度了。
不建议使用eval
虽然从演示例子看,eval的能力是强过于JSON.parse的,它可解析不规范的JSON字符串,但是G的例子也可以看出,eval是不安全的,特别是数据是第三方给予时候,你根本不知道eval之后它会干什么。
所以结论就是,乖乖用JSON.parse解析JSON对象。
eval是强烈不建议用来解析JSON字符串,但是凡事无绝对,如果数据来源于你信任的并且格式也不大规范,那用它也不是不可以。