1.eval方式解析
function strToJson(str){var json = eval("(" + str + ")");return json;}console.log(strToJson("{'int':1, 'string':'demo'}"));
运行截图:
注: 记得别忘了str两旁的小括号。
永远不要使用 eval !!!
eval() 是一个危险的函数, 它使用与调用者相同的权限执行代码。如果你用 eval() 运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到某一个 eval() 被调用时的作用域,这也有可能导致一些不同方式的攻击。相似的 Function 就不容易被攻击
2.new Function形式
function strToJson(str){var json = (new Function("return " + str))();return json;}console.log(strToJson("{'int':1, 'string':'demo'}"));
运行截图:
3.使用全局的JSON对象
function strToJson(str){return JSON.parse(str);}console.log(strToJson('{"int":1, "string":"demo"}'));
运行截图:
注: 单引号,双引号的位置。 使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来。