返回json数据的Eval格式 ”invalid label” 错 与 JSON.parse

文章来自:http://www.blogjava.net/xskowscut/articles/277283.html

我初学JSON,按照官方说明,在json2.js中有parse和stringify两个方法,parse用于从一个字符串中解析出json对象。还是举个例子说明:

1 var  str  =   " {'name':'x', 'age':23} " ;
2 JSON.parse(str);

原来认为这肯定能够正确执行的,但是无论怎样写这个对象string,都抛出异常。后来发现原来是 " ' 导致的错误。如果改为:

1    var  str = ' { " name " : " xskow " " age " : 23 } ';
2 JSON.parse(str);

就OK了!
还有就是我们写对象的时候一般可以{name:'xskow'},即属性名可以不用双引号括起来,但如果使用JSON.parse的话,每个属性都必须用双引号括起来,否则也会抛出异常。

stringify方法就是和parse功能相反,但是一般对自定义对象也没有异常产生,这里就不说了

 

 

文章来自:http://hi.baidu.com/91youqu/blog/item/ad3e7b1e9ee26dc2a78669c0.html

比如,如下的代码:

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

你可能感兴趣的:(html,json,.net,浏览器,脚本)