对于json格式的字符串,在使用eval将字符串转换为json对象时需要注意在前后加上小括号。如下所示:
<script type="text/javascript">
var data = '{root:[{name:"1", value:"0"},{name:"6101", value:"北京"},{name:"6102", value:"天津"}]}';
var dataObj_1 = eval(data);
var dataObj_2 = eval("(" + data + ")");
console.info(dataObj_1);
console.info(dataObj_2);
</script>
该代码的运行结果如下:

之所以会出现如上的结果,是因为eval本身就可以解析并且运行字符串中的代码。由于json是以{}的方式来开始和结束的,在JS中,它会被当成是一个语句块来处理,所以想要不被当作语句块来处理,就必须强制性的将它转为一种表达式。加上圆括号的目的就是为了使函数在处理的时候强制将括号内的表达式转为对象,而不是作为语句来执行。
本文介绍了如何使用eval函数正确地将JSON格式的字符串转换成JavaScript对象,并解释了为何需要在字符串前后添加括号的原因。
2071

被折叠的 条评论
为什么被折叠?



