字符串转json对象

1,320 阅读1分钟

JSON.parse()

该方法对对象字符串有着自己的规则

'{"name":"ma","age":12}'  

key必须用双引号(不能是单引号)引起来,value也是,如果value的值是number或者boolean类型则可以不用
数组没有什么硬性要求,是个规则的字符串数组就行

//对象
let objStr = '{"name":"ma","age":true}'
let obj = JSON.parse(objStr)//{name: "ma", age: true}

//数组
let arrStr = '[1,2]'
let obj = JSON.parse(arrStr)//[1, 2]

eval()

eval方法没有上面的诸多限制,不过上面的限制存在对他也没有什么影响,但是有一点必须要注意, 对象字符串必须在首尾加上()不然eval会把他识别为代码块

//对象
let objStr = '({"name":"ma","age":true})'
let obj = eval(objStr)//{name: "ma", age: true}

let objStr = '({name:"ma",age:true})'
let obj = eval(objStr)//{name: "ma", age: true}

//数组
let arrStr = '[1,2]'
let obj = eval(arrStr)//[1, 2]

new Function()

有关 new Function的知识点,请访问 new Function

new Function()的参数是某个字符串,在使用时,编译器会将参数中的字符串当作正常的脚本代码来执行。利用这种方法来把字符串转对象,可以简单的想象成就是new出一个对象。

//对象
let objStr = '{name:"ma",age:true}'
let obj = new Function("return" + objStr)()

let objStr = '{"name":"ma","age":true}'
let obj = new Function("return" + objStr)()

//数组
 let arrStr = '[1,2]'
let obj = new Function("return" + arrStr)()