文章来自: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);
2 JSON.parse(str);
原来认为这肯定能够正确执行的,但是无论怎样写这个对象string,都抛出异常。后来发现原来是 " 和 ' 导致的错误。如果改为:
1
var
str
=
'
{ " name " : " xskow " , " age " : 23 }
';
2 JSON.parse(str);
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