方法一:eval函数
eval函数通过调用js解析器来将字符串转换为js语句,除了可以用来转换JSON外,还可以执行字符串形式的js语句。因此,如果不能保证传入字符串的安全性,最好不要使用eval。
var obj = eval('('+JSONTest+')');
方法二:JSON解析器
JSON解析器只接受JSON字符串类型的参数,拒绝辨识所有脚本,因此相比于eval更加安全。但是JSON解析器依赖于本地浏览器的支持,不过主流浏览器都支持其中的两个函数JSON.parse
和JSON.stringify
。
JSON.parse
使用示例
var json = '{"result":true, "count":42}';
obj = JSON.parse(json);
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
JSON.stringify
使用示例
console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"
console.log(JSON.stringify([new Number(3), new String('false'), new Boolean(false)]));
// expected output: "[3,"false",false]"
console.log(JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] }));
// expected output: "{"x":[10,null,null,null]}"
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// expected output: ""2006-01-02T15:04:05.000Z""