原文链接http://xiemingmei.iteye.com/blog/1172453
(1)var vjson = eval(jsonstr);
缺点:不安全,有可能jsonstr中有恶意脚本,那就麻烦了。(2)var vjson = json_parse(jsonstr);
安全,解析速度也很快,不过需要引入json_parse.js脚本;
(3)var vjson = JSON.parse(jsonstr);
安全,解析速度也很快。网上声称Firefox 3.1 和 IE 8 RC1浏览器内置该API接口,可以直接使用。如果考虑很多浏览器不支持内置的JSON,则在文件中引入json.js脚本即可。
json.js、json_parse.js两个文件在https://github.com/douglascrockford/JSON-js上可以下载。
注:使用JSON.parse()时,数据一定要用双引号,例如:{"test":"123"},而不能是单引号{'test':'123'},否则会抛出异常,JSON对格式比较严格,一定得是双引号。
function handle_success(response){ var json = eval(response); // response = "{'foo' : 'bar'}"; }
浏览器会报,invalid label错, 这是因为, eval会尝试将你的response解释为一个label, 当你在脚本中直接写:
<script> {'foo' : 'bar'};</script>
会报错的原理是一样的.
解决办法有俩个:
var json = eval('(' + response + ')'); // response = "{'foo' : 'bar'}";
或者
eval('var json = ' + response); // response = "{'foo' : 'bar'}"; //json is available now