JSON.prase()和 eval()区别

来源:互联网 发布:网络诽谤案例 编辑:程序博客网 时间:2024/06/01 07:41
json的解析方法共有两种:eval_r() 和 JSON.parse(),使用方法如下: 

 

 var jsonData = '{"data1":"Hello,", "data2":"world!}'; 

 

 var evalJson=eval_r('('+jsonData+')'); 

 

 var jsonParseJson=JSON.parse(jsonData); 

 

 这样就把jsonData这个json格式的字符串转换成了JSON对象。 

 

 二者的区别如下: 

 

 var value = 1; 

 

 var jsonstr = '{"data1":"hello","data2":++value}'; 

 

 var data1 = eval_r('('+jsonstr+')'); 

 

 console.log(data1);//这时value值为2 

 

 var data2=JSON.parse(jsonstr); 

 

 console.log(data2);//报错 

 

 可以看到控制输出台的结果,第一个eval_r()顺利执行,第二个报错了。从上例就可以明显地看出,eval在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的),
如上例中,由于用eval解析一个json字符串而造成原先的value的值改变
0 0