JSON中eval与parse的区别
JSON中eval与parse的区别
json的的解析方法 (非原创)
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值为2vardata2=JSON.parse(jsonstr);console.log(data2);//报错
可以看到控制输出台的结果,第一个eval_r()顺利执行,第二个报错了。
从上例就可以明显地看出,eval在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的),如上例中,由于用eval解析一个json字符串而造成原先的value的值改变。