首页 > 代码库 > JSON中eval与parse的区别

JSON中eval与parse的区别

json的的解析方法 (非原创)

json的解析方法共有两种:eval_r() 和 JSON.parse(),使用方法如下:

var jsonData = http://www.mamicode.com/‘{"data1":"Hello,", "data2":"world!}‘;

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

var jsonParseJson=JSON.parse(jsonData);

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

二者的区别如下:

var value = http://www.mamicode.com/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的值改变。

JSON中eval与parse的区别