let
test =
"{age: 12, name: 'Wong'}"
;
let
obj =
eval
(
`(
${test}
)`
);
console
.
log
(
Object
.
prototype
.
toString
.
call
(obj));
let test = "[1,2,3]";
let arr = eval(`( ${test} )`);
console.log(Object.prototype.toString.call(arr));
方法三:Function
关于Js中的new Function()
当new Function()
的参数是某个字符串时,编译器会将参数中的字符串当做正常的脚本代码来执行。利用这种方法来把字符串转为对象,可以简单的想象成就是new出一个对象。
let test = '{"age": "12", "name": "Wong"}';
let obj = (new Function("return " + test))();
console.log(Object.prototype.toString.call(obj));
let test = "[1,2,3]";
let arr = (new Function("return " + test))();
console.log(Object.prototype.toString.call(arr));
方法二:JSON.parse()
let test = '{"age": "12", "name": "Wong"}';
let obj = JSON.parse(test);
console.log(Object.prototype.toString.call(obj));
let test = "[1,2,3]";
let arr = JSON.parse(test);
console.log(Object.prototype.toString.call(arr));
使用JSON.parse()
转化json对象,需要注意:
1.字符串的数据格式
let str = '{"age": 12, "name": "Wong"}';
其中的age属性、name属性都必须用双引号引起来。
而不能写成对象形式的字符串(key键没有用双引号),如:let str = '{age: 12, name: "Wong"}';
以上代码使用JSON.parse()
来转化会报错,因为使用JSON.parse()
需要严格遵守JSON规范。
2.单引号和双引号
let str = '{"age": 12, "name": "Wong"}';
是使用单引号来套住双引号;如果改变 单引号 和 双引号 的关系,如:let str = "{'age': 12, 'name': 'Wong'}";
如果还是使用JSON.parse()
来转化就会报错。