json的解析方法共有两种:eval() 和 JSON.parse()

例子:

1 var value = 1;
2 var jsonstr = '{"data1":"hello","data2":++value}';
3 var data1 = eval_r('('+jsonstr+')');
4 console.log(data1);//这时value值为2var data2=JSON.parse(jsonstr);
5 console.log(data2);//报错

 

在代码中使用eval是很危险的,特别是用它执行第三方的JSON数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身。

该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果。如果此方法以备Firfox 3.5 、IE8 及 Safari 4 原生支持。

大多数javascript类库包含的JSON解析代码会直接调用原生版本,如果没有原生支持的话,会调用一个略微不那么强大的非原生版本来处理。

 

只有在json.parse解析不了且一定要解析的情况下才不得不考虑使用eval().